【问题标题】:Unblocking url using webRequest API by removing the listener which has blocked it通过删除阻止它的侦听器,使用 webRequest API 解除阻止 url
【发布时间】:2022-01-06 12:49:01
【问题描述】:

从这篇文章中得到线索后 Post

我正在尝试删除侦听器(它已使用 webRequest api 阻止 URL)以取消阻止 URL。 但我无法成功删除它,我正在做这样的事情......

阻止网址

chrome.webRequest.onBeforeRequest.addListener( function blockListener (details) {
                        return {
                            cancel: true
                        };
                    },{ urls: [url], types: [ 'main_frame' ] }, ['blocking'] );

解除对 URL 的阻止

chrome.webRequest.onBeforeRequest.removeListener(blockListener);

我做错了什么?

【问题讨论】:

    标签: javascript dom-events webrequest


    【解决方案1】:

    当您添加侦听器以便将其作为参数传递时,您正在使用命名函数,而且,您只传递要删除的侦听器,这应该是第二个参数,在您定义您所在的事件之后删除监听器。然而,这不是正确的做法。相反,你应该单独定义你的函数,比如

        function blockListener(details) {
            // Your code
        }
    

    然后使用它来添加/删除侦听器。

    下面的 sn-p 有一个带有内部文本的 div,您可以在其上单击 5 秒钟然后停止收听。您可以尝试一下,并在测试期间查看日志。

    function clicked() {
        console.log("Clicked");
    }
    
    document.getElementById("foo").addEventListener("click", clicked);
    
    setTimeout(function() {
        document.getElementById("foo").removeEventListener("click", clicked, false);
        console.log("No longer listening");
    }, 5000);
    <div id="foo">abcd</div>

    【讨论】:

    猜你喜欢
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 2020-11-06
    • 2021-07-02
    • 2018-05-30
    • 1970-01-01
    相关资源
    最近更新 更多