gpt4 book ai didi

html - WKWebView 未打开某些目标 ="_blank"链接

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:58:18 25 4
gpt4 key购买 nike

我已经实现了公认的解决方案 here它确实适用于一些网站。例如:访问 www.tomcruise.com 并单击他的预告片。这些链接中的每一个都有 target="_blank"并在实现之前链接的堆栈溢出帖子中建议的解决方案后开始打开。

但现在我发现如果我们去here然后点击任何链接(我试过的那个,在写这个问题时,有一个 href 标签,如下所示

 <a rel="nofollow" target="_blank" href="http://www.nowmagazine.co.uk/celebrity-news/victoria-and-david-beckham-fighting-to-be-together-296082" class="ot-anchor aaTEdf" jslog="10929; track:click" dir="ltr">http://www.nowmagazine.co.uk/celebrity-news/victoria-and-david-beckham-fighting-to-be-together-296082</a>

当我从 WKWebView 内部单击此链接时,下面的 WKUIDelegate 方法确实被调用但具有 navigationAction.request = ""因此当调用 webView.loadRequest("") 时没有任何反应。还有其他人面临这个问题吗?

  optional func webView(_ webView: WKWebView, createWebViewWithConfiguration configuration: WKWebViewConfiguration,
forNavigationAction navigationAction: WKNavigationAction,
windowFeatures windowFeatures: WKWindowFeatures) -> WKWebView?{
if navigationAction.targetFrame == nil {
webView.loadRequest(navigationAction.request)
}

return nil
}
  • 导致使用空 url 调用 WKUIDelegate 方法的上述指定 href 标记有何特殊之处?
  • 我们如何解决这个问题?让我知道您是如何引起问题的,因为我也对调试感兴趣。

最佳答案

我希望我可以使用 WKWebView 委托(delegate)方法解决它,但我无法弄明白。

于是就转向了UIWebView时代的网页加载完成后运行一个javascript函数的方案

func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) {
let jsCode = "var allLinks = document.getElementsByTagName('a');if (allLinks) { var i;for (i=0; i<allLinks.length; i++) {var link = allLinks[i];var target = link.getAttribute('target');if (target && target == '_blank') {link.setAttribute('target','_self');} } }"
webView.evaluateJavaScript(jsCode, completionHandler: nil)
}

这解决了点击任何 google plus 帖子页面中的链接导致加载空白页面的问题


2015 年 11 月 3 日更新:问题中解释的现象在 Swift 2.0 代码中不再发生。因此,您应该能够使用提供的解决方案 here为您所有的目的

关于html - WKWebView 未打开某些目标 ="_blank"链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31955880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com