0

我在内容脚本中遇到了一个奇怪的问题。"run_at" : "document_end"内容脚本在清单中定义。页面加载后,脚本会在页面中插入一个对象标签(如果具有预定义 id 的标签尚不存在),并在其中设置一些属性,例如typewidthheightinnerHTMLtitle。在这里一切正常。

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();

我在页面 html 代码中看到了新对象,其属性中有正确的值。

一段时间后,我需要title在同一内容脚本中读取对象的属性。代码很简单:

function ReadTitle()
{
  var obj = document.getElementById("unique_id");
  var value = obj.title; // breakpoint
  console.log(value);
  // TODO: want to use proper title value here
}

该函数是从 background.html 页面调用的:

chrome.tabs.onActivated.addListener(
function(info)
{
  chrome.tabs.executeScript(info.tabId, {code: 'setTimeout(ReadTitle, 250);'});
});

不幸的是,ReadTitle我得到的不是我所期望的。title我看到记录的值不是当前值,而是:

function title() { [native code] }

如果我在注释标记的行设置断点// breakpoint,我会在观察者中看到所有对象属性(包括title)都是正确的。然而,变量value获得了上述描述性字符串。

显然,我错过了一些简单的事情,但我无法弄清楚。

答案。这是托管使用类型对象的 npapi 插件中的一个错误。对于所有阅读此问题并有意提供帮助的人,我深表歉意。

4

1 回答 1

0

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

于 2012-09-17T12:02:04.967 回答