gpt4 book ai didi

javascript - WKWebView:加载页面后调用javascript

转载 作者:可可西里 更新时间:2023-11-01 02:23:11 27 4
gpt4 key购买 nike

我正在做以下事情:

  • 载入一个 WKWebView,我们称这个view A
  • 要求用户输入一些详细信息
  • 要求用户点击按钮
  • 拦截 WKWebView 上的点击并在应用程序上推送一个新 View ,我们将其称为 View B
  • 允许用户在新 View 中计算结果,然后返回到之前加载的 WKWebView

现在:我想将我计算的信息添加到之前加载的网页(view A)。我知道该怎么做的唯一方法是在 loadView() 方法上加载 javascript。但是,当您从view B导航回view A时,不会调用此方法,因为view A已经加载。当 View 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 中计算)调用方法“setValue(customparameter)”,而不是在 loadView 中,而是在 View 重新调用时出现。

我可以将值存储在单例对象中,这样没问题。但是我不知道如何在这个阶段调用/注入(inject)javascript。有帮助吗?

最佳答案

使用 WKWebViewConfiguration removeAllUserScripts 然后重新添加所有更改的脚本(包括未更改的)。请记住使用共享或单例 WKWebViewConfiguration 实例。

这将解决任何刷新或创建新的 wkwebview 以拥有最近的内容

关于javascript - WKWebView:加载页面后调用javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29601293/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com