问题标签 [safari-content-blocker]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
405 浏览

ios - 定期从服务器更新 blockerList.json

我正在为 iOS 构建一个内容拦截器应用程序。

有什么方法可以在后台定期从服务器更新 blockerList.json 文件?

我不知道该怎么做,甚至不知道从哪里开始。

0 投票
1 回答
924 浏览

json - 用于 Safari 内容的多个过滤器阻止 Swift

我正在构建一个简单的内容阻止应用程序。UISwitches它有效,但我想使用(保存到)应用过滤器(阻止哪些网站,哪些不阻止NSUserDefaults)。因为内容阻止扩展使用 json,所以我不清楚如何选择多个 json 文件同时运行。

任何想法如何实现?多个扩展?以某种方式组合和拆分json文件?

0 投票
1 回答
949 浏览

javascript - 有谁知道您实际上是如何更新 safari 内容拦截器的 blockerList.json 文件的?

Apple 为我们提供了一个 API 来更新用于 safari 内容阻止程序的 json (SFContentBlockerManager.reloadContentBlockerWithIdentifier),因此很明显 Apple 打算让我们使被阻止的项目可自定义。

我已经玩了很长时间了,但我无法弄清楚你实际上是如何做到这一点的。

我尝试将不同的 json 文件加载到扩展中(一个用于广告,一个用于网站等),但发送多个文件似乎总是会破坏我的扩展。

我也尝试在应用程序中编辑 blockerList.json 文件,但这似乎也破坏了扩展。我还被告知我们不允许编辑与我们的应用程序捆绑在一起的资源。

似乎不存在用于修改哪些内容被阻止的文档。有没有人有一个例子或至少一个我可以使用的文档的链接?

谢谢

0 投票
1 回答
258 浏览

ios - 我如何知道我的 iOS Safari 内容拦截器是否已启用?

是否有 iOS API 可以告诉我我的 Safari 内容拦截器是否已启用?或者如果我想知道这一点,我是否必须求助于某种启发式方法?

0 投票
3 回答
1407 浏览

ios - iOS 内容拦截器白名单网站

在我的内容拦截器中,有没有办法阻止某个网站上的广告拦截?例如,如果我想屏蔽除 The Verge 之外的所有网站上的广告,有没有办法防止我提供的屏蔽规则影响此页面?

0 投票
2 回答
1114 浏览

swift2 - 可选(错误域=ContentBlockerErrorDomain 代码=1“(空)”)

使用 SFContentBlockerManager.reloadContentBlockerWithIdentifie 加载 json 文件时出现以下错误

可选(错误域=ContentBlockerErrorDomain 代码=1“(空)”)

0 投票
2 回答
2716 浏览

ios - 确定用户是否启用了应用程序的 Safari 内容拦截器扩展

我正在开发Safari Content Blocking 扩展。如果扩展被禁用,我打算显示设置说明,如果相反启用,我打算显示设置。如何确定用户是否启用了扩展程序?

我见过这种方法来检测是否激活了自定义键盘,但没有NSUserDefaults与 Safari 内容拦截器相关的键。

0 投票
1 回答
461 浏览

ios - iOS 内容拦截器在 iPad 上不起作用(在 iPhone 上很好)

我刚刚制作了一个 Content Blocker 来阻止 Safari 中的一些信息(类似于 adBlock,但不阻止广告),并且在 iPhone Simulator 和我的 iPhone 6S 上一切正常,但是虽然我可以在 Settings -> Safari 中打开内容阻止器 - > 内容拦截器,在 iPad Simulator 和我的 iPad mini 2 上的 Safari 中没有发生任何事情,有人知道为什么吗?

(Xcode 7.1 + iOS 9.1 + 斯威夫特 2.1)

提前致谢。

0 投票
1 回答
936 浏览

ios - Swift:在 iOS 9 中重新加载内容拦截器列表

我正在尝试 IOS 9 中的新功能:内容拦截器(广告拦截器) 在我的应用程序中,我有 3 个我想要阻止的项目(网站)(例如:1. abc.com 2. def.com 3. xyz.com ) 对于每个项目,我使用开关控制 (ON/OFF) 来让用户选择 BLOCK 或 NOT BLOCK 网站。

当更改开关的状态开/关时,我想重新加载文件blockerList.json。但我不知道该怎么做。

0 投票
0 回答
174 浏览

javascript - iOS 9 内容过滤器替换字符串的出现

我正在尝试制作一个内容过滤器,通过用更好的替代品替换网页文本来自动审查网页(例如,用 $ 和 * 代替脏话)。

在创建操作扩展时,我发现这很容易做到,它可以让您非常轻松地修改网页。但是对于内容过滤器中的操作,我不确定如何执行此操作。

我认为代码需要看起来像这样:

"type": "css-display-none"这似乎是唯一可行的方法,因为其他类型(blockblock-cookiesignore-previous-rules)在这里似乎不相关。但是,我不知道如何使用 CSS 选择器替换文本。

我查看了 Apple 引用的这个CSS 选择器网站,但找不到解决方案。

编辑

我正在尝试使用 Javascript 而不是 CSS 的不同方法,更像是操作扩展的工作方式。我将 Javascript 原型作为 NSExtensionJavaScriptPreprocessingFile 添加到 Info.plist。

由于某种原因,这段代码似乎什么也没做。为什么动作扩展中的相同代码在内容过滤器中不起作用?

Javascript 动作: