我正在学习如何创建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
我得到了与此问题中看到的相同的错误,没有答案.详细说明,我正在尝试在我的代码中加载此演示.我稍微修改了一下,因为我没有在任何头文件中包含他们的代码 - 这个特殊的代码片段将由jQuery加载.无论如何,所以我的代码看起来像这样:
<script type='text/javascript'
src='https://www.google.com/jsapi?key=ABQIAAAAKl2DNx3pM....'>
</script>
<script type='text/javascript'>
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('string', '', 'Country');
data.addColumn('number', 'Population (mil)', 'a');
data.addColumn('number', 'Area (km2)', 'b');
data.addRows(5);
data.setValue(0, 0, 'CN');
data.setValue(0, 1, 1324);
data.setValue(0, 2, 9640821);
data.setValue(1, 0, 'IN');
data.setValue(1, 1, 1133);
/* ... */
var chart = new google.visualization.IntensityMap(
document.getElementById('chart_div'));
chart.draw(data, {});
}
$(document).ready(function() {
google.load('visualization', '1', {packages:['intensitymap']});
google.setOnLoadCallback(drawChart);
});
</script>
Run Code Online (Sandbox Code Playgroud)
这部分代码位于div中,其可见性根据需要进行切换.整个批次(这里的整个页面)作为ajax调用的结果返回.
这里使用jQuery的$(document).ready()处理程序的理论意味着应该在文档准备好时加载谷歌.
但是,我得到了这个:

无论该部分是否在内部ready().现在这里是真正的踢球者:在dom explorer中,我可以找到所说的对象:

任何人都可以首先向我解释为什么会发生这种情况然后我要做些什么来解决它?
作为一个天真的javascript开发人员,我尝试在我的head标签中包含google脚本.然后产生类似这个问题 …
我正在尝试加载两个具有$.getScript获取Google Map脚本功能的脚本,然后在加载之后,我得到另一个脚本(goMap),可以轻松制作地图小程序.
但是,在加载时,第一个获取Google Map API的脚本是好的,然后第二个脚本返回一个解析错误并显示:
TypeError:'undefined'不是构造函数'
然而,我不知道它在哪里引用或哪一行,我认为它必须尝试在此文件上执行Geocoder(第一行之后(function($){:
这是我的代码:
$.getScript('http://maps.google.com/maps/api/js?sensor=true').done(function()
{
$.getScript('../js/gomap.js').done(function()
{
// this never gets called
alert('gomap loaded');
}).fail(function(jqxhr, settings, exception)
{
alert(exception); // this gets shown
});
}).fail(function()
{
alert('failed to load google maps');
});
Run Code Online (Sandbox Code Playgroud)
我试图改变AJAX设置来设置async到false,但它并没有帮助的.