這是我多年來作爲一名Web開發人員在嘗試使用Xcode和Swift(最新版本)編寫OSX應用程序後的第一個問題。OSX上的Swift:WebView stringByEvaluatingJavaScriptFromString不起作用
我想要做的是在我用Webkit/WebView加載的網頁上執行JavaScript。 我嘗試了很多方法(互聯網充滿了答案 - 主要針對iOS),但對於OSX + Swift + WebView(而不是UIWebview或WkWebView)來說,這種方法很少。
我最新的做法是這樣的ViewController.swift:
import Cocoa
import WebKit
class ViewController: NSViewController, WebFrameLoadDelegate {
var myWebView:WebView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
myWebView = WebView(frame: self.view.frame)
myWebView.frameLoadDelegate = self
//Load URL
let url = NSURL(string: "http://google.com");
let request = NSURLRequest(URL: url!);
myWebView.mainFrame.loadRequest(request)
self.view.addSubview(myWebView)
//Insert JS
myWebView.stringByEvaluatingJavaScriptFromString("alert('test');");
let script = "document";
if let returnedString = myWebView.stringByEvaluatingJavaScriptFromString(script) {
print("the result is \(returnedString)");
}
}
/*
* Page ready
*/
func webViewDidFinishLoad(myWebView : WebView) {
print("WvFinished")
}
func webViewDidStartLoad(myWebView : WebView) {
print("WvStarted")
}
}
無論是JS-警報,也不是HTML文檔作品的回報。
PS:「webViewDidFinishLoad」和「webViewDidStartLoad」似乎都不會被執行。
我真的很感激任何幫助。我想我幾乎搜索了整個網絡的所有提示 - 但沒有爲我工作。
預先感謝您!
最佳,
亞歷
這並不是iOS的WebFrameLoadDelegate沒有方法webViewDidFinishLoad和/或webViewDidStartLoad –
如果你想監視你的網頁加載,你可以使用'FUNC web視圖(發件人:WebView中!didFinishLoadForFrame框架:WebFrame){ 打印(「didFinishLoadForFrame 「) }' –
你完全正確,謝謝。我試着在這裏使用「stringByEvaluatingJavaScriptFromString」方法,但結果相同:沒有錯誤,但根本沒有效果。你有好主意嗎? – AlexDoe