Firefox& Chrome - iframe的不同行为

时间:2015-11-09 02:11:48

标签: javascript jquery iframe google-chrome-extension

我在我的网站上添加了一个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"
}

1 个答案:

答案 0 :(得分:1)

为了在iframe中自动插入内容脚本,请在manifest.json中添加"all_frames": true

"content_scripts": [ {
  "js": .................,
  "matches": .................,
  "all_frames": true
} ],

文档: