WKWebView:页面加载后调用javascript
Posted
技术标签:
【中文标题】WKWebView:页面加载后调用javascript【英文标题】:WKWebView: calling javascript after page is loaded 【发布时间】:2015-04-13 08:48:09 【问题描述】:我正在做以下事情:
加载一个 WKWebView,我们称之为 view A 要求用户输入一些详细信息 要求用户点击按钮 拦截对 WKWebView 的点击并在应用程序上推送一个新视图,我们称之为 view B 允许用户在新视图中计算结果,然后返回到之前加载的 WKWebView现在:我想将我计算的信息添加到之前加载的网页(view A)。我知道如何做到这一点的唯一方法是在 loadView() 方法上加载 javascript。但是,当您从 view B 导航回 到 view A 时,不会调用此方法,因为 view A 已经存在加载。当视图 A 重新出现时强制重新加载也会丢失用户已编辑的字段中的值。
这是我必须调用脚本的“标准”代码:
override func loadView()
super.loadView()
var contentController = WKUserContentController();
var userScript = WKUserScript(
source: "setValue(5)",
injectionTime: WKUserScriptInjectionTime.AtDocumentEnd,
forMainFrameOnly: true
)
contentController.addUserScript(userScript)
var config = WKWebViewConfiguration()
config.userContentController = contentController
self.webView = WKWebView(frame: self.containerView!.bounds, configuration: config)
所以现在我需要您的帮助来了解如何使用自定义值(在 view B 中计算)而不是在 loadView 中调用方法“setValue(customparameter)”,但当视图重新出现。
我可以将值存储在单例对象中,这样就可以了。但是我不知道在这个阶段如何调用/注入 javascript。有什么帮助吗?
【问题讨论】:
【参考方案1】:使用 WKWebViewConfiguration removeAllUserScripts 然后再次添加所有更改的脚本(包括未更改的脚本)。请记住使用共享或单例 WKWebViewConfiguration 实例。
这将解决任何刷新或创建新 wkwebview 的问题
【讨论】:
【参考方案2】:怎么样:
self.webView?.evaluateJavaScript("setValue(" + customparameter + ")")
【讨论】:
以上是关于WKWebView:页面加载后调用javascript的主要内容,如果未能解决你的问题,请参考以下文章
swift 笔记:iOS与JavaScript的交互(三):WKWebView 1.新建WKWebView加载本地,远程页面
深入理解 WKWebView(基础篇)—— WKWebView 加载生命周期与代理方法剖析