我想通过Firefox扩展程序访问youtube上的评论部分。由于评论部分位于iframe中,并且位于其他网站(plus.googleapis.com),因此我需要启用跨域功能。
我通过在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());
来测试,如果跨域脚本正在运行,但是当加载注释时,脚本显示空消息,但是当加载注释时,脚本显示[undefined],而不是评论部分的内容。为什么?以及如何获取iframe内容?
答案 0 :(得分:1)
youtube.js
代码存在问题。我不知道为什么,但是我无法访问#views-test-frame元素,所以我尝试了另一个div,它在iframe中,并且它有效。