【问题标题】:how do I fake the UIWebViewNavigationTypeLinkClicked for a UIWebVIew我如何伪造 UIWebViewNavigationTypeLinkClicked 的 UIWebVIew
【发布时间】:2015-04-27 18:03:40
【问题描述】:

我的问题是我在 UIWebView 中使用的网站使用 Javascript 打开链接

 window.open source, '_blank' //coffeescript

这是我当前用来捕获链接的代码...(不起作用),理论上,在 safari 中打开它们。发生的事情是单击此代码实际上会触发并最终以 UIWebViewNavigationTypeOther 作为 UIWebViewNavigationType

func webView(webView: UIWebView!, shouldStartLoadWithRequest request: NSURLRequest!, navigationType: UIWebViewNavigationType) -> Bool {
    println("inside")
    var req = request.URL
    println(req.scheme)
    if navigationType == UIWebViewNavigationType.LinkClicked {
        println("false")
        UIApplication.sharedApplication().openURL(request.URL)
        return false
    }
    println("true")
    return true
}

我几乎总是以 UIWebViewNavigationType.other 作为 url 类型...我可以在 window.open 中做些什么来强制 linkClicked 类型发生吗?或者通过 window.open 发送一些我可以在我的末端阅读的自定义信息?我想避免使用 url?clicked=1 方法。

我对这里的想法持开放态度......

【问题讨论】:

  • 如何让启动新窗口的相同 JS 代码更改链接的样式以使其看起来已访问。更好的方法可能是将其添加到历史记录中,然后 Web 视图将认为它已访问。
  • 好吧,如果它不是相对的,我想抓住链接并在 Safari 中打开它。这就是这里的最终目标.. 我现在几乎必须抓住它才能正确处理重定向

标签: javascript ios swift uiwebview


【解决方案1】:

要从 javascript 中伪造 onclick 事件,您需要执行以下操作..

var aTag = document.createElement('a');
aTag.setAttribute('href',"http://www.google.com");
aTag.innerHTML = "link text";
aTag.click()

上面的代码会命中 UIWebViewNavigationType.LinkClicked

window.open("http://www.w3schools.com");

以上代码会触发UIWebViewNavigationType.other

【讨论】:

    猜你喜欢
    • 2010-12-14
    • 2010-11-15
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 2013-01-03
    • 2020-06-14
    • 2011-07-13
    • 2016-11-12
    相关资源
    最近更新 更多