【问题标题】:How to preserve loaded javascript content in a WebView when loading a new page?加载新页面时如何在 WebView 中保留加载的 javascript 内容?
【发布时间】:2015-05-01 15:31:26
【问题描述】:

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

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

【问题讨论】:

    标签: javascript cocoa webview state


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-15
      相关资源
      最近更新 更多