我正在创建一个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