如何在加载新页面时保留WebView中加载的javascript内容?

时间:2015-05-01 15:31:26

标签: javascript cocoa webview state

在WebView中,我可以通过运行view.stringByEvaluatingJavaScriptFromString或直接在JS上下文中加载代码来加载javascript代码,您可以通过view.mainFrame.javaScriptContext检索。

然而,当我导航到一个新的URL(无论是在WebView.mainFrame中还是在Javascript中,例如通过设置window.location),我的所有javascript代码都会丢失,我必须再次加载它。当我在JS代码中导航并希望在我的脚本中继续之后,这尤其是一个问题。有没有办法避免清除所有JS,特别是阻止停止当前的JS代码?

1 个答案:

答案 0 :(得分:0)

事实证明,不可能阻止上下文娱乐。相反,我最终得到了一个独立的JSContext实例(手动创建)和一个我在该上下文中设置为变量的WebView实例。这样,您可以在独立上下文中运行javascript,但使用WebView执行所有Web工作。最大的缺点是您不能简单地对DOM执行操作,而是要在上下文中提供操作函数(映射到WebView实例),或者为将其方法发布到JS的所有WebView类(DOMDocument等)创建扩展。这样你就可以直接对swift / obj-c类进行操作。