javascript - 如何在WKWebview中监听网页postMessage事件?

标签 javascript swift wkwebview safari-app-extension

我让我的 WKWebview 加载一个网页,如下所示:

class SafariExtensionViewController: SFSafariExtensionViewController, WKNavigationDelegate {

    static let shared = SafariExtensionViewController()
    var webView: WKWebView!

    override func loadView() {
        let webConfiguration = WKWebViewConfiguration()
        self.preferredContentSize = NSMakeSize(400, 600)
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.navigationDelegate = self
        view = webView
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        let myURL = URL(string: frameUrl)
        let myRequest = URLRequest(url: myURL!)
        webView.load(myRequest)
        os_log("EXTEST the WKWebview has loaded")
    }

}

在我的本地主机 Web 服务 js 文件中,我添加了一个发布消息事件

window.parent.postMessage(message, '*')

现在我尝试在我的 swift 代码中监听这个事件,可能吗?

最佳答案

可以对 JavaScript 回调使用react。检查 WKWebViewevaluateJavaScript: 方法。

https://developer.apple.com/documentation/webkit/wkwebview/1415017-evaluatejavascript

关于javascript - 如何在WKWebview中监听网页postMessage事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59299245/

相关文章:

javascript - 仅当使用 NodeJS 更改 Firebase 数据时才执行

JavaScript 正则表达式语法错误

ios - 排序快速插入的 Realm 记录

ios - Swift 动画重复次数

ios - 找出 UIViewController 是否由于后退导航而出现

javascript - 如何:If the label contains "Alumini" then add class to input

javascript - 如何使用 Vue.js 在同一个表中嵌套多个循环

访问照片库时 iOS 10.3 WKWebView 崩溃

swift - ios8 手势识别器不能在 WKWebView 上快速工作

ios - 如何检测正在 WKWebView 中播放的电影?