/ / Prístup k vlastnostiam objektu DOM zo skriptu obsahu prehliadača Chrome - google-chrome, google-chrome-extension, npapi, content-script

Prístup k vlastnostiam objektu DOM zo skriptu obsahu prehliadača Chrome - google-chrome, google-chrome-extension, npapi, content-script

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ď č. 1

Chybne nahlásený doplnok NPAPI použitý v objekte title ako podporovaná metóda.