Я работаю над проектом с WKWebView, и у меня есть загрузка HTML из локального проекта.JavaScript работает, как и ожидалось, но когда я пытаюсь использовать класс, это делает WebView просто пустым.
Я пытался использовать синтаксис ES6 и синтаксис ES5, они оба вызывают одну и ту же проблему.Есть ли способ использовать классы JavaScript в локальном html-файле в WKWebView?Если есть что я делаю не так?
Это мой код для приложения WebView
import UIKit
import WebKit
class ViewController: UIViewController {
let webView = WKWebView()
let remoteAccess = false
let url = "Website/index"
override func loadView(){
if(remoteAccess){
loadWebView(string: url)
}else{
loadLocalWebView(string: url)
}
self.view = webView
}
override var prefersStatusBarHidden: Bool{
return true;
}
override func viewDidLoad() {
super.viewDidLoad()
}
func loadWebView(string: String){
if let url = URL(string: string){
let request = URLRequest(url: url);
webView.load(request)
}else{
print("Failed to connect to URL: " + string)
}
}
func loadLocalWebView(string: String){
if let url = Bundle.main.url(forResource: string, withExtension: "html"){
webView.loadFileURL(url, allowingReadAccessTo: url.deletingLastPathComponent())
}else{
print(string + "not found!")
}
}
}
Это код для HTML-файла
<!DOCTYPE html>
<html>
<head>
<title>Local Demo</title>
<meta name="viewport"
content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css"
href="index.css" />
</head>
<body>
<script>
var display = new Display(window.innerWidth,window.innerHeight);
var ctx = display.create();
function render(){
ctx.fillRect(0,0,100,100);
requestAnimationFrame(render);
}
render();
function Display(width,height){
this.canvas = document.createElement("canvas");
this.canvas.id = "canvas";
this.canvas.width = width;
this.canvas.height = height;
}
Display.prototype.create = function(){
document.body.appendChild(this.canvas);
this.ctx = canvas.getContext("2d");
return this.ctx;
}
</script>
</body>