2013-02-18 34 views
3

我想在YouTube(内容脚本)中使简单的扩展工作,但它似乎并没有正常工作。如何在Chrome扩展中匹配YouTube网址?

奇怪的是它适用于某些时代,有些简单的则不适用。

我的最终目标是使其仅在视频网址中工作,但在此之前我就陷入了困境。

我最初尝试:

"matches": [ "http://www.youtube.com/*" ] 

没有任何成功可言,我发现奇怪的,所以我想这是我的第一个问题,因为在另一部分我做了,它的工作完美的http://twitter.com/

我读的代码部分YouTube扩展,以及一个用于:

"matches": [ "*://*.youtube.com/*" ] 

奇怪的是,这仅适用有时候,我不能复制/ UN说明什么时候。当我重新加载页面时,它确实不起作用,但在一些网址中它只是起作用。

实际的脚本是光秃秃的骨头脚本调试:

$(window).load(function() { 
    alert(2); 
}); 

所以我很困惑这个不一致的行为。

编辑:

此网址的唐的似乎工作:

做这:

编辑2:

整个清单:

{ 
    "name": "__MSG_extname__", 
    "version": "0.1", 
    "default_locale": "en", 
    "manifest_version": 2, 
    "icons": { 
    "16": "images/icon16.png", 
    "48": "images/icon48.png", 
    "128": "images/icon128.png" }, 
    "content_scripts":[ 
    { 
    "matches": [ "*://*.youtube.com/*" ], 
    "js": ["jquery.min.js", "script.js"] 
    } 
    ], 
    "web_accessible_resources": ["images/down-arrow.png"] 
} 
+0

您能否提供一些对您的脚本无效的URL? – lmortenson 2013-02-18 22:41:58

+0

我已经更新了这个问题,它真的好像是随机的(似乎没有与网址相关。 – Trufa 2013-02-18 22:48:21

回答

1

您需要发布或链接到你的整个manifest.json,但最可能的问题是$(window).load(...
By default, Chrome content scripts fire at unpredictable times which could be either before or after window.onload fires!

所以,加"run_at": "document_end"到您的清单,以保证您的脚本将在可预见的时间运行,并window.onload之前。

~~~
接下来,it is possible that other extensions are blocking that alert。如果需要,请检查并禁用其他分机。

~~~
最后,YouTube可能会通过AJAX加载一些页面 - 尽管目前我无法找到它的情况。 AJAX加载的页面不会重新激发您的内容脚本。如果你发现一个AJAX加载一个“新”页面的情况,(1)在这里用配方注释,(2)你可以use AJAX-aware techniques to refire code as necessary。 (请注意,waitForKeyElements.js将通过清单而不是@require指令添加。)

+0

''run_at“:”document_end“'似乎解决了它,非常感谢你! – Trufa 2013-02-19 00:50:03

+1

你非常欢迎,乐于帮助! – 2013-02-19 00:51:57

相关问题