Narazil som na zvláštny problém so skriptom obsahu. Skript obsahu je definovaný ako "run_at" : "document_end"
v manifeste. Po načítaní stránky skript vloží na stránku značku objektu (ak značka s preddefinovaným ID ešte neexistuje) a nastaví v nej niektoré vlastnosti, ako napr. type
, width
, height
, innerHTML
, a title
. Všetko tu funguje dobre.
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();
Vidím nový objekt na stránke html-code so správnymi hodnotami vo svojich vlastnostiach.
O nejaký čas neskôr si musím prečítať title
vlastnosť objektu v rovnakom skripte obsahu. Kód je jednoduchý:
function ReadTitle()
{
var obj = document.getElementById("unique_id");
var value = obj.title; // breakpoint
console.log(value);
// TODO: want to use proper title value here
}
Funkcia sa volá zo stránky background.html:
chrome.tabs.onActivated.addListener(
function(info)
{
chrome.tabs.executeScript(info.tabId, {code: "setTimeout(ReadTitle, 250);"});
});
Bohužiaľ, v ReadTitle
Nedostávam to, čo očakávam. Namiesto aktuálnej hodnoty title
Vidím, že zaznamenaná hodnota je:
function title() { [native code] }
Keby som stanovil bod prerušenia na riadku označenom // breakpoint
komentár, v sledovači vidím, že všetky vlastnosti objektu vrátane title
sú správne. Napriek tomu premenná value
získa vyššie uvedený popisný reťazec.
Zjavne mi niečo jednoduché chýbalo, ale neviem na to prísť.
Odpoveď. Išlo o chybu v pluginu npapi, ktorý hostí objekt použitého typu. Ospravedlňujem sa za všetkých, ktorí si prečítali otázku so zámerom pomôcť.
odpovede:
0 pre odpoveď č. 1Chybne nahlásený doplnok NPAPI použitý v objekte title
ako podporovaná metóda.