我正在学习如何创建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
我正在开发一个 Chrome 扩展程序,我想在加载所有页面脚本后加载它。
网站页面包含这样的代码:
<html>
<body>
<div id="main">All body elements, texts, etc...</div>
<script>
window.netflix = window.netflix || {};
netflix.falkorCache = {"genres":"58"}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我的扩展代码是:
$(document).ready(function() {
launchPlugin();
function launchPlugin() {
console.log(typeof(window.netflix));//I have also tried just `netflix`
if(typeof(window.netflix)!=='undefined'){
startNetflixPlayer();
} else{
setTimeout(
function(){
launchPlugin();
}, 700);
}
}
//other code...
});
Run Code Online (Sandbox Code Playgroud)
但插件永远不会运行,startNetflixPlayer()因为window.netflix总是undefined。我也尝试过检查变量netflix,但它也返回undefined。
同时,如果我尝试检查console.log(window.netflix)Chrome 的开发人员控制台,我会看到结果。
console.log(typeof(window.netflix))返回object。但是在这个 Chrome 扩展之后仍然看不到这个变量并返回undefined.
我相信我错过了一些简单的东西,但无法理解到底是什么。
有什么想法如何使用扩展程序的脚本从网站访问变量(和对象数据)?
PS我也检查了这个答案,但它对我不起作用: chrome扩展:在页面完成加载javascript后运行脚本