我已经实施了已接受的解决方案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
}
答案 0 :(得分:1)
我希望我可以使用WKWebView委托方法解决它,但我无法弄明白。
所以我在完成网页加载后去了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提供的解决方案用于所有目的