从 Chrome 内容脚本"isolated world"内部更新挖空.js可观察量



我有一个我试图以多种不同方式解决的问题,但是我完全被困了,没有我能找到的东西可以帮助...

问题

我正在编写一个Chrome扩展程序,以在通过Ajax提交之前修改网页上某些输入元素的值。这些元素是使用基于初始AJAX请求的响应构建的基因敲出模型创建的。问题是,每当我的Chrome Content脚本更新input元素的值时,敲除观测值都不会更新(并且最终的帖子请求使用序列化的基因敲除对象,这些对象尚未更改)。

>

我见过的几种建议,

  1. 直接更新可观察到的淘汰赛 - 不可能,因为我的脚本在其自己的沙箱中(或"孤立世界")
  2. 在更新其值后,在元素上手动触发change事件 - i so 非常希望这能起作用。但是,它似乎无能为力。我今天玩了几个小时后,我的理解是,这个事件也 隔离在沙箱中(但我可能是错的)。

我可以看到的唯一可能的解决方案(这很丑陋)正在阻止帖子并直接修改请求的内容。但是,当我只能修改dom中的表格...

时,这似乎很愚蠢

有什么想法吗?我真的可以使用一些帮助。

我弄清楚了,这要归功于这个答案。我不知道可以将我的JavaScript注入页面。因此,我将change事件触发器注入DOM,这导致在页面范围中而不是在我的内容脚本范围中调用它。

var script = document.createElement('script');
script.textContent = "$('.myInputField').eq(" + i + ").change()";
(document.head || document.documentElement).appendChild(script);
script.parentNode.removeChild(script);