How do I execute a page-defined JavaScript function from a Firefox extension?

前端 未结 5 1933
感动是毒
感动是毒 2021-01-04 21:14

I\'m creating a Firefox extension for demo purposes. I to call a specific JavaScript function in the document from the extension. I wrote this in my HTML document (not insid

5条回答
  •  余生分开走
    2021-01-04 21:39

    var pattern = "the url you want to block";
    
    function onExecuted(result) {
    console.log(`We made it`);
    }
    
    function onError(error) {
    console.log(`Error: ${error}`);
    }
    
    function redirect(requestDetails) {
    var callbackName = 'callbackFunction'; //a function in content js
    var data = getDictForkey('a url');
    var funcStr = callbackName + '(' + data + ')';
    const scriptStr = 'var header = document.createElement(\'button\');\n' +
        ' header.setAttribute(\'onclick\',\'' + funcStr + '\');' +
        ' var t=document.createTextNode(\'\');\n' +
        ' header.appendChild(t);\n' +
        ' document.body.appendChild(header);' +
        ' header.style.visibility="hidden";' +
        ' header.click();';
    const executing = browser.tabs.executeScript({
        code: scriptStr
    });
    executing.then(onExecuted, onError);
    return {
        cancel: true
    }
    }
    
    chrome.webRequest.onBeforeRequest.addListener(
    redirect,
    {urls: [pattern]},
    ["blocking"]
    );
    
    function getDictForkey(url) {
    xxxx
    return xxxx;
    }
    

提交回复
热议问题