Chrome扩展:使用内容脚本修改网页上的现有脚本



我正在创建一个chrome扩展,它需要挂接到目标网页上已经存在的另一个脚本中。为了简单起见,我试图在页面上找到以下现有的脚本元素,并向其添加console.log((

<script type="text/javascript">
var viewModel = new ScenePlayViewModel('', 'Ace', false);
viewModel
.load('jgWJJ2qsxx')
.then(function () {
sceneDOM = new SceneEditDOM2(viewModel.scene());
sceneDOM.init();
viewModel.isSubmitViaShareUrl(false);
viewModel.isSubmitViaUnityPackage(false);
console.log("HOOK INJECTED"); <--------------------------------------------- line to add
});
</script>

我尝试了很多解决方案,但似乎都不起作用。例如,我曾尝试使用内容脚本来查找脚本并替换文本,但它似乎运行的是更改前的脚本,而不是我修改过的代码。

// replaces javascript on website, but doesn't run new version
var scriptLoadScene = $("script:contains('new ScenePlayViewModel')"); // find the script
scriptLoadScene.text("console.log('Hello World')"); // change the text

我该怎么办?基本上,我只是想在网页上更改/添加脚本,以添加更多功能。

这并不能完全回答您的问题,但有望帮助您找到解决方案。

首先——希望有比我更了解这一点的人会证实或怀疑这一点——根据我的理解,脚本代码只在页面加载时运行一次,除非由某些事件触发。由于Chrome扩展是在页面加载后触发的,因此该脚本已经运行,除非触发,否则之后插入的任何内容都不会运行。

我想你总是可以在编辑完函数后再次调用它,但我没有知识或经验来预测届时会发生什么。

根据我的经验,我只是添加了我自己的"标记和我想要运行的代码,方法是将它们写入DOM,或者写入"或"元素。

祝你好运。-brent

相关内容

  • 没有找到相关文章

最新更新