【发布时间】:2021-01-08 02:12:36
【问题描述】:
我最近为基于 iOS WebView 的应用程序将 UIWebView 更改为 WKWebView。
WebView 的 javascript 中有一个 window.open 函数,弹出窗口调用 opener(parent) 的函数,如下所示
// In parent window's javascript
window.open('popup' .....)
function doIt(){
}
// In popup window's javascript
window.opener.doIt()
在 UIWebView 中,我使用了 JSContext 以便弹出窗口可以调用 opener 的 javascript 函数。
// Legacy code for communication between 2 UIWebView windows
// Not works when using WKWebView
JSContext *parentCtx = [parentWebView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
JSContext *childCtx = [popupWebView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
childCtx[@"window"][@"opener"] = parentCtx[@"window"];
不过,JSContext 在使用 WKWebView 时似乎不可用。在这种情况下,如何在 javascript 上下文中链接两个 webview?
在不更改旧 javascript 代码的情况下调用 opener 函数应该怎么做?
提前致谢。
【问题讨论】:
标签: javascript ios uiwebview popup wkwebview