我在我的网站上添加了一个YouTube视频(例如<iframe width="640" height="360" src="https://www.youtube.com/embed/QE5KOfjKLy0" frameborder="0" allowfullscreen></iframe>
)
使用Firefox的扩展程序我可以获取youtube嵌入的网址视频 我中间点击视频标题或&#34; youtube按钮&#34; (见下面的截图)。
我不知道为什么但它有效,我可以在&#34;浏览器控制台&#34;中看到视频的网址。 (对于Firefox,ctrl + shift + j)。
但是Chromium-browsers有不同的行为,它只适用于当前网页上的简单网址(<a href="...">...</a>
),而不适用于来自iframe
的网址。
如果Chrome可以做同样的事情,那就太好了。
有人知道为什么它与Firefox和Chrome有什么不同?
此处内容脚本(适用于Firefox和Chromium):
(function (undefined) {
'use strict';
var YoutubeExtActions = {
linkClickListener : function(e) {
if(e.button === 1) {
var link = $(e.target).closest('a');
if(link.length && link.attr('href') !== '#') {
var url = link[0].href;
if(url.match(/youtube.com\/watch/i) || url.match(/youtube.com\/embed/i)) {
e.preventDefault();
e.stopPropagation();
console.log("you got it: " + url);
}
}
}
}
}
window.addEventListener("click",YoutubeExtActions.linkClickListener,false);
})();
Chrome中的JS仅适用于常见链接(不是来自iframe)
的manifest.json:
{
"content_scripts": [ {
"js": [ "jquery-1.11.3.min.js", "content_script.js" ],
"matches": [ "<all_urls>" ],
"run_at": "document_idle"
} ],
"description": "chromium youtube iframe get url",
"manifest_version": 2,
"name": "chromium youtube iframe get url",
"version": "1.0"
}
答案 0 :(得分:1)
为了在iframe中自动插入内容脚本,请在manifest.json中添加"all_frames": true
:
"content_scripts": [ {
"js": .................,
"matches": .................,
"all_frames": true
} ],
文档: