2014-09-25 59 views
0

我想访问使用Firefox扩展的youtube上的评论部分。由于评论部分位于iframe中,并且位于其他网站(plus.googleapis.com)上,因此我需要启用跨域功能。Firefox附加SDK和跨域

我这样做,通过在的package.json跨域内容:

{ 
    "name": "testfirefoxextension", 
    "title": "testFirefoxExtension", 
    "id": "id removed", 
    "description": "nike z youtubu v zvezi", 
    "author": "kv1dr", 
    "license": "MPL 2.0", 
    "version": "0.1", 
    "permissions": { 
    "cross-domain-content": ["http://www.youtube.com", "https://plus.googleapis.com/"] 
    } 
} 

以防万一,在lib/main.js我既增加youtube.com和googleapis.com包括部分。这是lib/main.js的全部内容:

// Import the page-mod API 
var pageMod = require("sdk/page-mod"); 
// Import the self API 
var self = require("sdk/self"); 

// Create a page mod 
// It will run a script whenever a "youtube.com" URL is loaded 
// The script replaces the page contents with a message 
pageMod.PageMod({ 
    include: ["*.youtube.com","*.googleapis.com"], 
    contentScriptFile: [self.data.url("jquery-2.1.1.min.js"), self.data.url("youtube.js")] 
}); 

在youtube.js我alert($("#comments-test-iframe").html());只是为了测试,如果跨域脚本工作,但当评论加载中,脚本显示了空消息,但是当评论被加载,脚本显示[未定义],而不是评论部分的内容。为什么?以及如何获取iframe内容?

+0

我们可以看到更多的youtube.js吗?难道是因为你错过了“http://www.youtube.com”'中的最后'/'。是否因为youtube在'https'? – willlma 2014-09-25 21:55:11

+0

这些都来自yotube.js。我没有添加任何其他内容,因为即使这样也行不通。是的,我也尝试在YouTube链接末尾添加斜线,并且我在YouTube的非SSL(http)页面上测试了此扩展程序,但它仍然无效。 – kv1dr 2014-09-25 22:07:22

+1

“当注释加载时,脚本显示[未定义]。”等待评论加载的代码在哪里? – willlma 2014-09-25 23:50:40

回答

1

代码有问题youtube.js。我不知道为什么,但是我无法访问#comments-test-frame元素,所以我尝试了另一个div,那是在iframe里面,它工作。