我怎样才能轻轻地“破坏”UIWebview?

时间:2012-08-29 14:27:26

标签: javascript ios html5 uiwebview

最近,一些开发人员已经开始创建应用程序,这些应用程序只通过UIWebViews指向国有内容(免费,公共属性)。这通常不会成为问题,除了应用程序都支持广告,有些甚至付费。从本质上讲,他们是在为国有内容赚钱。

我的问题是:如何强制网站打开一个新的Safari窗口而不是显示在UIWebview中(包含在他们应用的品牌中)?我可以使用以下方法检测UIWebview,但除了隐藏内容之外我无法做任何事情。我更喜欢它提供我们内容的链接,然后在Safari中打开。

这就是我检测UIWebview的方式:

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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

自网络开始以来,这一直是一个令人担忧的问题。你无法阻止人们抓取你的内容,但你可能很难重新构建它。

已编辑添加

不幸的是,应用可以拦截window.open():UIWebView respond to Javascript calls

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

答案 2 :(得分:1)

您可以查看它是否是WebView或Mobile Safari,如this thread中所示。问题是,你只能通过自定义URL方案打开Safari,但想想只有http://,https://等工作。即使有类似safari-http://的东西,带有UIWebView的应用程序的程序员也可以捕获该请求并将其重定向回Web视图。所以,我很遗憾地说:那是不可能的。