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

问题描述 投票:0回答:1

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

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

javascript jquery google-chrome hook inject
1个回答
0
投票

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

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

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

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

祝你好运。-brent

© www.soinside.com 2019 - 2024. All rights reserved.