目标: 使用内容脚本“Youtube.js”
中定义的Youtube对象显示页面信息问题: 无法访问会员。
我有以下脚本,该脚本也在contents_scripts下的manifest.cs中注册:
/// <reference path="UtilityFunctions.js" />
var playerElementId = "movie_player";
var youtube = new Youtube();
writePageInfo(youtube);
function Youtube() //ctor
{
this.playerObj = getPlayer();
}
Youtube.prototype.IsCurrentSite = function ()
{
var url = location.href;
if (url.indexOf("youtube.com") > 0)
{
return playerObj != null;
}
return false;
}
function getPlayer()
{
return document.getElementById(playerElementId);
}
//debug
function writePageInfo(youtubeObj)
{
//alert("From Youtube content script"); //this line is executed
alert("Youtube - debug: " + youtubeObj.IsCurrentSite()); //this line NOT: undefined function
}
我不知道如何编写未注释的警报消息。
P.S .: 如果我打开几个Youtube页面,会创建几个对象吗?
答案 0 :(得分:1)
我不知道你在做什么,但错误的原因是你正在创建和使用Youtube
构造函数的实例,然后你正在为它的原型添加一个方法。将IsCurrentSite
对象传递给youtube
函数时,此新方法(即writePageInfo
)不存在。
要解决此问题,您需要调用writePageInfo(youtube)
AFTER 将方法添加到原型中:
var youtube = new Youtube();
Youtube.prototype.IsCurrentSite = function ()
{
var url = location.href;
if (url.indexOf("youtube.com") > 0)
{
return playerObj != null;
}
return false;
}
writePageInfo(youtube); //moved here
回答您的问题,每个浏览器标签(或窗口)都有自己的JavaScript环境。