4

最近,一些开发人员开始创建应用程序,这些应用程序仅通过 UIWebViews 指向国有内容(免费、公共财产)。这通常不会是一个问题,除了这些应用程序都是广告支持的,有些甚至是付费的。从本质上讲,他们是靠国有内容赚钱的。

我的问题是:如何强制网站打开一个新的 Safari 窗口,而不是显示在 UIWebview 中(包含在他们的应用程序品牌中)?我可以使用以下方法检测 UIWebview,但除了简单地隐藏内容之外,我什么也做不了。我希望它提供指向我们内容的链接,然后在 Safari 中打开。

这就是我检测 UIWebview 的方式:

var is_uiwebview = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent);
4

3 回答 3

2

不幸的是,对于开发人员来说,将 User-Agent 字符串强制为他们想要的任何东西都是微不足道的,因此您阻止这些开发人员的尝试可能只是暂时的。您不能强制在浏览器中查看您的内容。用户也可以使用 CURL 之类的工具来查看您的内容...

于 2012-08-29T14:34:36.133 回答
1

您可以查看它是 WebView 还是 Mobile Safari,如本线程所示。问题是,您只能通过自定义 URL 方案打开 Safari,但认为只有 http://、https:// 等有效。即使有类似 safari-http:// 之类的东西,具有 UIWebView 的应用程序的程序员也可以捕获该请求并将其重定向回 Web 视图。所以,我很遗憾地说:那是不可能的。

于 2012-08-29T15:51:36.553 回答
1

一旦你检测到你在 UIWebview 中,你需要触发一个 window.open() 来把你的内容放在一个新的窗口中。

这谈到了一些让它有点棘手(但并非不可能)的怪癖:在 UIWebview 中打开弹出链接。请注意,那里的问题与您的问题相反,但接受的答案确实显示了如何让 UIWebview 通过 Javascript 弹出一个新窗口。

自从 Web 出现以来,这一直是一个问题。您无法阻止人们抓取您的内容,但您可以使其难以重构。

编辑添加

不幸的是,该应用程序可以拦截 window.open():UIWebView 响应 Javascript 调用

我想你总是可以放弃并展示一个横幅,上面写着“你用税收支付了这些数据,你不应该再用广告支付它只需打开浏览器并转到......”

于 2012-08-29T14:37:58.333 回答