コンテキストメニューがバックグラウンド スクリプトから 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拡張機能がそれを行うので、私がやろうとしていることは可能ですが、その方法を理解するのに苦労しています. 前もって感謝します。