相关疑难解决方法(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扩展程序修改窗口对象吗?

我想制作一个Chrome扩展程序,在其中提供一个新对象window.当在加载了扩展名的浏览器中查看网页时,我希望window.mything通过Javascript提供.该window.mything对象将具有我将在扩展中定义的一些函数,并且console.log当在启用了扩展的浏览器中查看页面时,这些函数应该可以从任何Javascript文件调用.

我能够使用内容脚本成功地将Javascript文件注入页面:

var s = document.createElement("script"); 
s.src = chrome.extension.getURL("mything.js");
document.getElementsByTagName("head")[0].appendChild(s);
Run Code Online (Sandbox Code Playgroud)

mything.js看起来像这样:

window.mything = {thing: true};
console.log(window);
Run Code Online (Sandbox Code Playgroud)

每当页面加载时,我都会看到整个window对象,因为我希望它在控制台中.但是,我无法window.mything从控制台与对象进行交互.似乎注入的脚本没有真正修改全局window对象.

如何window从Chrome扩展程序修改全局对象?

javascript google-chrome-extension

26
推荐指数
5
解决办法
2万
查看次数