【问题标题】:How Automatically On "Content Blocker" Extension in Safari section?如何在 Safari 部分中自动启用“内容拦截器”扩展?
【发布时间】:2015-11-24 10:57:58
【问题描述】:

我正在创建广告拦截器。我只是想自动在“内容拦截器”的 safari 扩展上。我浏览了示例,但没有找到任何解决方案。有什么办法可以“开启”扩展或者我们必须手动启动它?

【问题讨论】:

    标签: ios safari extension-methods adblock


    【解决方案1】:

    在 iOS 上,Safari 内容拦截器默认处于禁用状态。

    无法从您的应用中自动启用它们。您必须指示用户:

    1. 打开设置应用。

    2. 转到 Safari > 内容拦截器

    3. 打开内容拦截器扩展。

    在 macOS(自 10.12 起)上,适用类似规则:默认情况下禁用 Content Blocker 扩展程序(与您的应用程序捆绑),并且必须在 Safari 中由用户切换首选项 > 扩展

    【讨论】:

      【解决方案2】:

      假设您想测试您的“个人 AdBlock 程序”,首先准备一个虚拟 HTML,使用此行 <div class="ads">hello</div>

      接下来应用您的“个人 AdBlock 程序”,假设它是基于 JavaScript/CSS 的而不是类似代理的,您可以隐藏或从 DOM 中删除元素(节点)。

      例如: document.querySelector('div[class*="ads"]') -- 这是一种很好且(非常)通用的查找元素的方法。

      这是隐藏“广告”的方法 document.querySelector('div[class*="ads"]').style.display="none"; 或者,为了使其更强大,与页面上的其他规则相关,使其成为本地样式 + 重要通知器:document.querySelector('div[class*="ads"]').style.cssText="display:none !important;" ;

      您还可以从 DOM 中删除元素(节点): var e = document.querySelector('div[class*="ads"]') 关注: e.parentNode.removeChild(e);

      现在,您可能希望看到“您的 ADBLOCK”有效, 稍后(在页面加载并运行您的 javascript 代码之后)键入: console.log(null === document.querySelector('div[class*="ads"]') ? "removed(success)" : "still here(failed)")

      请注意,对于这个示例(为简单起见),我假设页面中只有一个具有该类的 div(避免循环 :))。

      如果您只是要隐藏该元素,您应该查询其当前(最新)样式条件,使用window 下存在的本机方法:

      console.log("none" === window.getComputedStyle(document.querySelector('div[class*="ads"]')) ? "hidden(success)" : "still here(failed)")

      享受吧!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-08
        • 1970-01-01
        • 1970-01-01
        • 2018-07-25
        • 2017-05-11
        相关资源
        最近更新 更多