WKWebkit是APP开发中非常常用的元件,但常常会有一些不是很顺利的疑难杂症,
只能一直查资料,这边我有做了一些小笔记,提醒自己下次遇到的时候不要再犯一样的错误,
希望也能帮上一样遇到相同问题的人,这边会单就网页需要另开分页时会遇上的问题来说~
网页另开分页有两种方法
一种为HTML5的target="_blank"
另一种为JS的window.open('')
若不另外设定,则我们将打不开此页面(无反应),以下是分别的解决办法~
第一种是target="_blank"
开启分页的解法
这个方法的解释是这样的,当网页跳转遇到target="_blank"
(targetFrame == nil
)时,停止预设行为,直接在原页开启
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
// 若 target="_blank",targetFrame 会 = nil
if navigationAction.targetFrame == nil {
// 传入 .cancel 停止 navigation 预设的行为
decisionHandler(.cancel)
webView.load(navigationAction.request)
return
}
//.allow 则是预设的行为
decisionHandler(.allow)
}
第二种window.open
开启分页的解法
window.open是js新开页面的一种方法,会用新开视窗的方法去完成载入页面,WKWebView假如没有处理,点击後也一样会没反应,所以需要在WKUIDelegate代理中的createWebViewWith新开一个WebView,当targetFrame == nil
或targetFrame?.isMainFrame == nil
时,处理return nil,这里return nil是不开新的webview,而就在原页加载
func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
if navigationAction.targetFrame == nil || navigationAction.targetFrame?.isMainFrame == nil {
webView.load(navigationAction.request)
}
return nil
}
以上就可以解决WebView跳转URL时,遇到需要另开新分页的状况~~
前面讲了很多 Kotlin Exposed 框架使用的方式。 今天来讲点观念性的东西,谈谈 Expo...
优良部份1~5 1. 宽松型别(loose typing)及 易转型 https://codepen...
废话不多说直接开始 在开启一个专案放以下两个cs DBconnection.cs: using My...
前言 昨天的最後提到建立user process的三个系统呼叫:fork(),vfork(),clo...
mysql最佳化工具针对一笔叙述根据成本与规则制定一个具体计画,包含了执行叙述的方式、连接表的顺序、...