将Swift代码中的内容注入WKWebView

时间:2015-05-16 14:05:45

标签: ios swift webkit

我正在开发一个使用id | title | relevant_ids 1 | title1 | 6,2,3 2 | title2 | 1 3 | title3 | 1,6 4 | title4 | 5,3 5 | title5 | 6,2,3 6 | title6 | 2,3 来显示html文档的应用。我想将我的Swift代码中的内容注入到本文档中。这就是我试过的:

WKWebView

只要JavaScript函数调用中的参数是硬编码的,这就完全按照我的预期运行:

var myString: String

// ... Code which assigns some value to myString

targetView.evaluateJavaScript("injector.injectSnippet(\(myString);", completionHandler: nil)

targetView.evaluateJavaScript("injector.injectSnippet(\"Hello World\");", completionHandler: nil) 对象位于我已添加到网络视图的用户控制器的JavaScript文件中:

injector

如何将内容导入WKWebView?

我浏览了Apple docs WebKit Objective-C编程指南 WebKit DOM编程主题,但我不明白什么样的var injector = (function () { "use strict" var msgBox; var injectSnippet = function (test) { msgBox.innerHTML = "Received value: " + test; } var init = function () { // Create msgBox div element and insert it into the document } return { init: init, injectSnippet: injectSnippet }; } ()); injector.init(); 他们在那里上课。 WebViewWKWebView都不具备他们在这些文档中使用的所有API。

有没有办法在Swift中直接操作DOM?我认为WebScriptObject可能是我正在寻找的,但我可以将其与UIWebView一起使用吗?

1 个答案:

答案 0 :(得分:0)

如果要继续使用evaluateJavaScript,则需要将值注入javascript字符串。

这样的东西
var jsTemplate = "injector.injectSnippet(\"%@\");"
var js = String(format:jsTemplate , myString)