1

コンテキストメニューがバックグラウンド スクリプトから chrome.tabs.executeScript を通じて呼び出されているスクリプトにクリックされたときに、アクティブな dom 要素を渡そうとしています。ブール値と文字列は問題なく渡すことができますが、dom 要素を渡すと常にエラーが発生します。ありえないと思い始めています。

//doScripts function called from browser action
chrome.browserAction.onClicked.addListener(function(tab) {
    doScripts(true, null);
});

//doScripts function called from context menu click
function getClickHandler(info, tab) {
    var currTarg = document.activeElement;
    console.log("currTarg = " + currTarg);
    doScripts(false, currTarg); 
}

//i reference doingBrowserAction and contextTarg in myscript.js
function doScripts(context, targ){
    chrome.tabs.executeScript(null, {code: "var doingBrowserAction = "+context+"; var contextTarg = "+targ+";"}, function(){
        chrome.tabs.executeScript(null, {file: "js/myscript.js"}, function(){
        //all injected
        });
    });
}
//setup context menu
chrome.contextMenus.create({
  "title" : "DESTROY!",
  "type" : "normal",
  "contexts" : ["page","selection","link","editable","image","video","audio"],
  "onclick" : getClickHandler
});

myscript.js で doingBrowserAction と contextTarg を参照しています。adblock拡張機能がそれを行うので、私がやろうとしていることは可能ですが、その方法を理解するのに苦労しています. 前もって感謝します。

4

1 に答える 1