在Webview iOS中注入JavaScript代码

use*_*468 6 javascript iphone xcode swift ios8

我创建了一个带有快速语言代码的iOS Web浏览器.并添加一个额外的按钮以在该网页上注入脚本,但是当我尝试这个时它总是崩溃:

webView!.evaluateJavaScript("document.body.style.background = 'red';", nil)
Run Code Online (Sandbox Code Playgroud)

知道如何解决这个问题吗?以及如何从文件中读取JavaScript代码,然后将其注入该webview元素.

我使用代码样式作为此示例,但使用WKWebView:https: //github.com/rshankras/WebViewDemo

如果你能解决这个问题,我需要一个基本的工作代码.以及如何从文件加载JavaScript的解决方案.并在WKWebView元素中注入该代码.

mat*_*ttr 3

我在当前的UIWebView API 文档中没有看到您正在使用的方法 (evaluateJavaScript),但它在WKWebView 文档中。也许您使用了错误的 API?也许尝试使用 stringByEvaluatingJavaScriptFromString(_:)代替:

let script = "document.body.style.background = 'red'"
if let result = webView.stringByEvaluatingJavaScriptFromString(script) {
    println("result is \(result)")
}
Run Code Online (Sandbox Code Playgroud)

另外,我不确定“!”是否有效。是需要的(直觉告诉我不是),因为你的代码周围没有上下文。所以也许可以尝试两个版本。

从文件中获取字符串类似于:

let path = NSBundle.mainBundle().pathForResource("jsFileName", ofType: "js")
if let content = String.stringWithContentsOfFile(path, encoding: NSUTF8StringEncoding, error: nil) {
    println("js content is \(content)")
}
Run Code Online (Sandbox Code Playgroud)

从磁盘加载有很多关于文件复制和存储方式的变量,因此您必须做一些工作才能使变量适合path您的结构。