Chrome扩展程序:在页面上运行任何嵌入式脚本之前运行内容脚本

时间:2018-02-14 19:36:42

标签: javascript google-chrome google-chrome-extension content-script browser-extension

我试图通过更改嵌入到视频的html观看页面中的 player_api 脚本中的一些变量来尝试更改YouTube播放器的某些行为。

The embedded script i'm trying to modify

问题是,无论我尝试什么,播放器的嵌入式脚本总是在我的扩展程序添加修改之前运行。从而保持玩家的行为相同。

我尝试将清单中的 run_at 属性设置为 document-start ,但是脚本根本没有运行

在我对其进行更改之前,我该怎么做才能暂停该脚本的执行?

  

PS:我尝试通过拦截html调用并使用 Charles Proxy 编辑正文来更改脚本,并根据需要更改播放器的行为。所以它知道如果在合适的时间完成它应该有用。

  

的manifest.json

{
    "manifest_version": 2,
    "name": "YouFit For YouTube",
    "version": "1",
    "content_scripts": [{
        "js": ["content.js"],
        "matches": ["https://*.youtube.com/watch?*",
        "https://*.youtube.com/watch?*"],
    }],
    "browser_action": {
        "default_icon": "icon.png"
    }
}
  

content.js

function changeBehavior() {
    var scriptElements = document.getElementsByTagName('script');
    for (var i = 14; i < scriptElements.length; i++) {
        var curScriptBody = scriptElements[i].outerHTML;
        // Find the script i'm interested in
        if (curScriptBody.indexOf("var ytplayer") != -1) {
            scriptElements[i].outerHTML = scriptElements[i].outerHTML.replace("<text>", "<replacement text>");
            alert("Replaced");
            break;
        }
    }
}
changeBehavior();

1 个答案:

答案 0 :(得分:0)

你尝试过这样的事吗?

content.js

var script = document.createElement('script');
script.textContent = "/* What you have in content.js right now */";
(document.head||document.documentElement).prepend(script);
相关问题