我正在使用 UIWebView 的应用程序中实现 wkwebview。当指向一个嵌入了 javascript 的本地 html 文件时,我无法让 javascript 执行。javascript 被剥离来做一个简单的警报并加载一个基本的谷歌地图。这些都没有得到执行。我需要运行本地服务器吗?GCD网络服务器..我应该补充一点,html/javascript 在 safari 中工作,谷歌浏览器没问题。尝试的解决方案包括: 1. AppTransportSecuritySettings AllowArbitrary 加载。2. ViewController.swift webview.configuration.preferences.javaScriptEnabled = true 3. 这个问题解决了这个问题,说是在 iOS 10.3 Load Javascript files through HTML file on WKWebView in iOS The Simulator is running 12.1 4. 这个问题也解决了要求 GCDWebserver 能够使用 wkwebview 执行 javascript 的问题。WKWebView 不执行任何 js 代码然而,这在最新版本的 iOS 中也得到了解决。这是一些代码:import UIKitimport WebKitclass ViewController: UIViewController, WKNavigationDelegate { //@IBOutlet var googleMap: WKWebView! var webview: WKWebView! override func loadView() { webview = WKWebView() webview.navigationDelegate = self view = webview } override func viewDidLoad() { super.viewDidLoad() //let url = URL(string: "https://schallerf1.com")! let url = Bundle.main.url(forResource: "index", withExtension: "html", subdirectory: "www")! webview.load(URLRequest(url: url)) webview.allowsBackForwardNavigationGestures = true let request = URLRequest(url: url) webview.configuration.preferences.javaScriptEnabled = true webview.load(request) }}<!DOCTYPE html><html> <head> <title>Simple Map</title> <meta name="viewport" content="initial-scale=1.0"> <meta charset="utf-8"> <style> /* Always set the map height explicitly to define the size of the div * element that contains the map. */ #map { height: 100%;没有一个 javascript 工作,我应该得到一个警报,一个简单的谷歌地图应该显示。我需要查看本地 Web 服务器 GCDWebserver 吗?
1 回答
DIEA
TA贡献1820条经验 获得超2个赞
你应该在这个WKNavigationDelegate方法中调用你的 javascript,当 webview 完成加载时调用它。
public func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
webView.evaluateJavaScript("initMap()", completionHandler: { (value, err) in
// Handle response here.
})
}
另外,我不确定您为什么要调用两个不同的webview.load()请求 - 也许不要这样做?
添加回答
举报
0/150
提交
取消