2015-11-09 48 views
0

我增加了一个YouTube视频在我的站点(如<iframe width="640" height="360" src="https://www.youtube.com/embed/QE5KOfjKLy0" frameborder="0" allowfullscreen></iframe>Firefox和Chrome浏览器 - 不同的行为IFRAME

而使用Firefox扩展,我可以取得YouTube的链接嵌入视频点击视频的标题或“youtube按钮”(请参见下面的屏幕截图)。

我不知道为什么,但它的作品,我可以看到视频的网址中的“浏览器控制台”(Ctrl + Shift + J为Firefox)。

但铬浏览器有不同的行为,它只适用于当前页面上的简单网址(<a href="...">...</a>),而不是来自iframe的网址。

如果Chrome可以做到这一点,那将会很棒。

有人知道为什么Firefox和Chrome会有所不同吗?

下面内容的脚本(Firefox和铬):

(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); 
})(); 

那JS在Chrome仅适用于普通的链接(而不是从I帧)

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

为了让iframe中autoinserted内容脚本manifest.json中添加"all_frames": true

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

文档:

相关问题