【问题标题】:What JavaScript code do I run when the user closes the tab?当用户关闭选项卡时,我运行什么 JavaScript 代码?
【发布时间】:2021-02-07 22:48:22
【问题描述】:

总结问题

我正在尝试使用 WKWebView 和 Swift 创建一个 macOS 选项卡式 Web 浏览器。一切正常,除了网页不知道我关闭了标签。我想告诉网页我关闭了标签

描述你的尝试

我什么都没试过,因为我不知道该怎么做

显示一些代码

我试过这样做

webView.removeFromSuperView()

但是网页不知道我关闭了标签


我不太懂javascript,所以请附上代码而不是解释

【问题讨论】:

  • 嗯,如果你关闭页面,它就死了,不存在了。那么通知它有什么意义呢?
  • 从技术上讲,您可以在关闭选项卡按钮中添加一个功能,该功能会在选项卡关闭时进行标记,否则我同意@KirilS。
  • @KirilS.,我的意思是,有些脚本依赖于 onbeforeunloadonunload 事件 - 所以,这是一个真实的用例

标签: javascript swift wkwebview


【解决方案1】:

Javascript 脚本使用onbeforeunloadonunload 事件来触发浏览器关闭。

由于您知道浏览器即将关闭,您可以自己调度此事件。例如,beforeunload 事件:

let script = """
   const event = new Event("beforeunload", { cancellable: true });
   const cancelled = !window.dispatch(event);
   // return back whether the user cancelled
   cancelled;
"""

当你需要关闭浏览器时,调用脚本:

let webView = WKWebView()
// ... other config
webView.evaluateJavaScript(script, completionHandler: { result, error in
   guard let cancelled = result else { return }
  
   if cancelled == 1 {
     // ... do whatever
   }
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 2012-08-08
    相关资源
    最近更新 更多