0

コンテンツスクリプトで奇妙な問題が発生しました。"run_at" : "document_end"コンテンツスクリプトは、マニフェストのように定義されます。ページがロードされた後、スクリプトはオブジェクトタグをページに挿入し(事前定義されたIDを持つタグがまだ存在しない場合)、、、、、、などのいくつかのプロパティをページtypeに設定widthします。ここではすべて正常に動作します。heightinnerHTMLtitle

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-codeに、プロパティに適切な値が含まれる新しいオブジェクトが表示されます。

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);'});
});

Unfortunately, in ReadTitle I'm getting not what I expect. Instead of current value of the title I see the logged value is:

function title() { [native code] }

If I set a breakpoint at the line marked by // breakpoint comment, I see in the watcher that all object properties including the title are correct. Nevertheless, the variable value gets the abovementioned descriptive string.

Apparently, I have missed something simple, but I can't figure it out.

The answer. It was a bug in the npapi plugin, which hosts the object of used type. My apologies for all who have read the question with intention to help.

4

1 に答える 1

0

The NPAPI plugin used in the object erroneously reported title as supported method.

于 2012-09-17T12:02:04.967 に答える