如何自动开启内容拦截器"在Safari部分扩展?

时间:2015-11-24 10:57:59

标签: ios safari extension-methods adblock

我正在制作广告拦截器。我只是尝试自动进行"内容拦截器"的safari扩展。我通过示例但没有找到任何解决方案。有没有办法去" ON"扩展或手动我们必须启动它?

2 个答案:

答案 0 :(得分:0)

假设你想测试你的个人AdBlock程序&#34;,首先准备一个虚拟HTML,用这一行<div class="ads">hello</div>

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

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

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

你也可以从DOM中删除元素(Node): var e = document.querySelector('div[class*="ads"]')跟随: e.parentNode.removeChild(e);

现在,您可能希望看到&#34;您的ADBLOCK&#34;工作, 之后(页面加载后,你的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)")

享受!

答案 1 :(得分:0)

在iOS上,默认情况下禁用Safari内容拦截器。

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

  1. 打开设置应用

  2. 转到 Safari &gt; 内容拦截器

  3. 切换内容拦截器扩展程序。

  4. 在macOS上(截至10.12),类似的规则适用:默认情况下禁用内容拦截器扩展程序(与您的应用程序捆绑在一起),并且必须在 Safari中由用户切换到偏好设置&gt;的扩展程序