iOS WKWebView 有时显示
iOS WKWebView displays sometimes
我有一个网页 link 无法通过 iOS WKWebView
显示。如何通过 WKWebView
显示这样的 link?
似乎只有 https://www.google.com and http://www.apple.com 的 3 版本会显示使用 http:// 或 https:// 的网页。如何通过 WKWebView 加载其他网页? (注意:所有网站都在 Google Chrome 和 Apple Safari 中加载,无需使用 http:// 语法。)
下面是来自 ViewDidLoad 的代码:
@IBOutlet weak var myWebkitView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
`if let myUrl = URL(string:"https://www.ihs-us.org")`
{
let myURLRequest = URLRequest(url: myUrl)
myWebkitView.load(myURLRequest)
}
}
Below links works only for Apple and Google.
https://www.google.com will shows a Web site
http://www.apple.com also will shows its web site
schools.nyc.gov/SchoolPortals/08/X282 -- causes a crash
ihs-us.org // causes a crash, and does not show a web page
所有浏览器都将 http:// 附加到 url(如果不存在),通常如果网页支持 SSL,就会有一个 re-direction 到 https:// 站点。我开发了一个供内部使用的浏览器,任何 URL 用户输入时,我都会将 http:// 添加到 URL。最简单的方法是
class func getValidURLFromString(_ urlString: String)->String{
if !urlString.hasPrefix("http://") && !urlString.hasPrefix("https://"){
return "http://" + urlString
}
else {
return urlString
}
}
已编辑:
ViewController代码
import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate {
@IBOutlet weak var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let urlString = isValidURLFormat("schools.nyc.gov/SchoolPortals/08/X282")
let myURL = URL(string: urlString)
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}
func isValidURLFormat(_ urlString: String) -> String {
if !urlString.hasPrefix("https://") && !urlString.hasPrefix("http://"){
return "http://" + urlString
}
return urlString }
}
Plist 设置
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</dict>
试试这个 -
import UIKit
import WebKit
class ViewController: UIViewController{
@IBOutlet var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let urlString = "ihs-us.org"
if urlString.hasPrefix("https://") || urlString.hasPrefix("http://"){
let myURL = URL(string: urlString)
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}else {
let correctedURL = "http://\(urlString)"
let myURL = URL(string: correctedURL)
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}
}
}
为schools.nyc.gov/SchoolPortals/08/X282-
而对于 ihs-us.org -
您只需要完成以下步骤-
打开项目的 Info.plist
文件。右键单击它并添加一行。
之后只需将这两行添加到您的(原样)-
`
我有一个网页 link 无法通过 iOS WKWebView
显示。如何通过 WKWebView
显示这样的 link?
似乎只有 https://www.google.com and http://www.apple.com 的 3 版本会显示使用 http:// 或 https:// 的网页。如何通过 WKWebView 加载其他网页? (注意:所有网站都在 Google Chrome 和 Apple Safari 中加载,无需使用 http:// 语法。)
下面是来自 ViewDidLoad 的代码:
@IBOutlet weak var myWebkitView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
`if let myUrl = URL(string:"https://www.ihs-us.org")`
{
let myURLRequest = URLRequest(url: myUrl)
myWebkitView.load(myURLRequest)
}
}
Below links works only for Apple and Google.
https://www.google.com will shows a Web site
http://www.apple.com also will shows its web site
schools.nyc.gov/SchoolPortals/08/X282 -- causes a crash
ihs-us.org // causes a crash, and does not show a web page
所有浏览器都将 http:// 附加到 url(如果不存在),通常如果网页支持 SSL,就会有一个 re-direction 到 https:// 站点。我开发了一个供内部使用的浏览器,任何 URL 用户输入时,我都会将 http:// 添加到 URL。最简单的方法是
class func getValidURLFromString(_ urlString: String)->String{
if !urlString.hasPrefix("http://") && !urlString.hasPrefix("https://"){
return "http://" + urlString
}
else {
return urlString
}
}
已编辑: ViewController代码
import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate {
@IBOutlet weak var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let urlString = isValidURLFormat("schools.nyc.gov/SchoolPortals/08/X282")
let myURL = URL(string: urlString)
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}
func isValidURLFormat(_ urlString: String) -> String {
if !urlString.hasPrefix("https://") && !urlString.hasPrefix("http://"){
return "http://" + urlString
}
return urlString }
}
Plist 设置
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</dict>
试试这个 -
import UIKit
import WebKit
class ViewController: UIViewController{
@IBOutlet var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let urlString = "ihs-us.org"
if urlString.hasPrefix("https://") || urlString.hasPrefix("http://"){
let myURL = URL(string: urlString)
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}else {
let correctedURL = "http://\(urlString)"
let myURL = URL(string: correctedURL)
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}
}
}
为schools.nyc.gov/SchoolPortals/08/X282-
而对于 ihs-us.org -
您只需要完成以下步骤-
打开项目的 Info.plist
文件。右键单击它并添加一行。
之后只需将这两行添加到您的(原样)-