我遇到了一个内容脚本的奇怪问题。内容脚本在清单中定义为"run_at" : "document_end"
。加载页面后,脚本会在页面中插入对象标记(如果尚未存在具有预定义标识的标记),并在其中设置一些属性,例如type
,width
,{{ 1}},height
和innerHTML
。这一切都很好。
title
我在页面html-code中看到了新对象,其属性中包含适当的值。
一段时间后,我需要在同一内容脚本中读取对象的function checkForObject()
{
var obj = document.getElementById("unique_id");
if(obj == null)
{
var d = document.createElement("object");
d.id = "unique_id";
d.width = "1";
d.height = "1";
d.type = "application/x-y-z";
d.title = "1000";
d.style.position = "absolute";
d.style.left = "0px";
d.style.top = "0px";
d.style.zIndex = "1";
document.getElementsByTagName("body")[0].appendChild(d);
}
}
checkForObject();
属性。代码很简单:
title
该功能从background.html页面调用:
function ReadTitle()
{
var obj = document.getElementById("unique_id");
var value = obj.title; // breakpoint
console.log(value);
// TODO: want to use proper title value here
}
不幸的是,chrome.tabs.onActivated.addListener(
function(info)
{
chrome.tabs.executeScript(info.tabId, {code: 'setTimeout(ReadTitle, 250);'});
});
我没有达到预期的效果。而不是ReadTitle
的当前值,我看到记录的值是:
title
如果我在function title() { [native code] }
注释标记的行上设置断点,我会在观察者中看到包括// breakpoint
在内的所有对象属性都是正确的。然而,变量title
得到上述描述性字符串。
显然,我错过了一些简单的事情,但我无法理解。
答案。这是npapi插件中的一个错误,它承载使用类型的对象。我向所有有意帮助的人致歉。
答案 0 :(得分:0)
对象中使用的NPAPI插件错误地将title
报告为支持的方法。