从Chrome的内容脚本访问DOM对象属性

时间:2012-09-17 09:20:50

标签: google-chrome google-chrome-extension npapi content-script

我遇到了一个内容脚本的奇怪问题。内容脚本在清单中定义为"run_at" : "document_end"。加载页面后,脚本会在页面中插入对象标记(如果尚未存在具有预定义标识的标记),并在其中设置一些属性,例如typewidth,{{ 1}},heightinnerHTML。这一切都很好。

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插件中的一个错误,它承载使用类型的对象。我向所有有意帮助的人致歉。

1 个答案:

答案 0 :(得分:0)

对象中使用的NPAPI插件错误地将title报告为支持的方法。