1.我尝试过使用缩短URL插入WKWebView和loadRequest(例如:https://bit.ly.xxxxxx)起作用了。转到
WKNavigationActionPolicyAllow
和代表``` didReceiveServerRedirectForProvisionalNavigation
然后获得一个新的请求URL(```navigationAction.request.URL.absoluteString``` )
,这不是缩短URL。然后显示网页。好的!
2.如果我在当前的WKWebview中单击了一个链接,那么它什么也不会做!我查过了decidePolicyForNavigationAction
当我点击缩短URL的链接时,它会转到我的WKNavigationActionPolicyAllow,然后什么也不做.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
从你的描述来看,你正在使用WKWebView在iOS应用中展示网页内容,并且已经成功处理了通过缩短URL(如bit.ly形式的链接)加载页面的场景。但是,当用户在已经加载的WKWebView中点击一个链接时,期望的页面跳转没有发生。
针对第二个问题,即WKWebView内点击链接无响应的情况,这里有几个可能的原因和解决办法:
确保代理方法正确实现:请确认WKNavigationDelegate
的方法是否被正确定义并设置为WKWebView的代理。特别是decidePolicyForNavigationAction:decisionHandler:
或更新后的Swift版本中的webView(_:decidePolicyFor:decisionHandler:)
需要正确实现以允许内部导航请求。
检查decisionHandler的使用:在decidePolicyForNavigationAction
方法中,你需要确保对于用户点击的链接调用decisionHandler
并传入.allow
来允许导航继续。例如,在Swift中可能是这样的:
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if navigationAction.navigationType == .linkActivated {
decisionHandler(.allow)
} else {
// 根据需要处理其他类型的导航
decisionHandler(.allow) // 或者根据情况拒绝
}
}
重定向问题:有时候,WKWebView在处理重定向时可能会遇到问题。虽然你提到在初次加载缩短URL时重定向工作正常,但内部点击可能触发不同的行为。确保对所有类型的navigationTypes都做了适当的处理。
Sandbox限制或权限问题:尽管不太常见,但有时App的沙盒环境或特定的权限设置也可能阻止WKWebView内的链接跳转。检查你的应用是否有相应的网络权限,并确保App Transport Security (ATS) 设置不会无意间阻止某些链接的加载。
JavaScript交互:如果页面依赖于JavaScript进行导航,确保WKWebView启用了JavaScript执行。这是默认开启的,但确认一下总没有坏处:
let configuration = WKWebViewConfiguration()
configuration.userContentController.add(self, name: "scriptMessageHandler")
webView = WKWebView(frame: .zero, configuration: configuration)
webView.configuration.preferences.javaScriptEnabled = true
查看错误日志:利用Xcode的调试工具查看控制台输出,看是否有任何相关的错误信息或警告,这可能会提供解决问题的线索。
如果以上建议都不能解决问题,可能需要更详细的代码审查或者具体的错误信息来进一步诊断问题所在。