【发布时间】:2019-09-11 13:28:02
【问题描述】:
我是 swift 新手。
我使用 WKWebView 构建了一个 Web 应用程序并将其作为 iOS 应用程序提供(这仅供公司内部使用)。
在网络应用程序中,我使用了 laravel 分页,这在浏览器和 android webview 上都能正常工作。
在 iOS 上发生的情况是,当我单击 WKWebView 内的页码链接时,该链接会在 safari 中打开。我想做的是在同一个 Webview 上打开它。
这是我在 ViewController.swift
中的代码import UIKit
import WebKit
class ViewController: UIViewController, WKNavigationDelegate {
var webView : WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let url = URL(string: "https://domain-online.asia")!
let urlRequest = URLRequest(url: url)
webView.load(urlRequest)
let refresh = UIBarButtonItem(barButtonSystemItem: .refresh, target: webView, action: #selector(webView.reload))
toolbarItems = [refresh]
navigationController?.isToolbarHidden = false
}
override func loadView() {
let source: String = "var meta = document.createElement('meta');" +
"meta.name = 'viewport';" +
"meta.content = 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no';" +
"var head = document.getElementsByTagName('head')[0];" + "head.appendChild(meta);";
let script: WKUserScript = WKUserScript(source: source, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
let userContentController: WKUserContentController = WKUserContentController()
let conf = WKWebViewConfiguration()
conf.userContentController = userContentController
userContentController.addUserScript(script)
webView = WKWebView(frame: CGRect.zero, configuration: conf)
webView.navigationDelegate = self
view = webView
}
func webView(webView: WKWebView!, createWebViewWithConfiguration configuration: WKWebViewConfiguration!, forNavigationAction navigationAction: WKNavigationAction!, windowFeatures: WKWindowFeatures!) -> WKWebView! {
if navigationAction.targetFrame == nil {
webView.load(navigationAction.request)
}
return nil
}}
【问题讨论】: