相关疑难解决方法(0)

使用内容脚本将代码插入页面上下文

我正在学习如何创建Chrome扩展程序.我刚开始开发一个来捕捉YouTube活动.我想将它与YouTube Flash播放器一起使用(稍后我将尝试使其与HTML5兼容).

manifest.json的:

{
    "name": "MyExtension",
    "version": "1.0",
    "description": "Gotta catch Youtube events!",
    "permissions": ["tabs", "http://*/*"],
    "content_scripts" : [{
        "matches" : [ "www.youtube.com/*"],
        "js" : ["myScript.js"]
    }]
}
Run Code Online (Sandbox Code Playgroud)

myScript.js:

function state() { console.log("State Changed!"); }
var player = document.getElementById("movie_player");
player.addEventListener("onStateChange", "state");
console.log("Started!");
Run Code Online (Sandbox Code Playgroud)

问题是控制台给了我"开始!" ,但没有"状态改变!" 当我播放/暂停YouTube视频时.

将此代码放入控制台时,它可以正常工作.我究竟做错了什么?

javascript google-chrome youtube-api google-chrome-extension content-script

452
推荐指数
5
解决办法
24万
查看次数

从 Chrome 扩展程序中挂钩 Websockets

我正在尝试创建一个 Chrome 扩展内容脚本,它可以挂钩特定页面的 WebSocket。目前,当访问页面时,内容脚本会向页面注入另一个脚本,如下所示:

    var s = document.createElement('script');
    s.src = chrome.extension.getURL('Script.js');
    s.onload = function () {
        this.remove();
    };
    (document.head || document.documentElement).appendChild(s);
Run Code Online (Sandbox Code Playgroud)

然后我的 Script.js 包含一个用于 websockets 的 addEventListener 。

Window.WebSocket.addEventListener("message",function(event){
console.log("Websocket read");
})
Run Code Online (Sandbox Code Playgroud)

但是当我运行扩展时,我收到错误无法读取未定义的属性 addEventListener。所以我不完全确定这是否是正确的方法。我已经验证该脚本确实已注入页面,但我如何在页面的原始 onmessage WebSocket 之上覆盖或创建自己的侦听器。是否可以?

javascript hook addeventlistener websocket google-chrome-extension

5
推荐指数
1
解决办法
2919
查看次数