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