Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在被“webView.uiDelegate”打开后处理“window.close”?_Ios_Swift_Xcode_Popup_Wkwebview - Fatal编程技术网

Ios 如何在被“webView.uiDelegate”打开后处理“window.close”?

Ios 如何在被“webView.uiDelegate”打开后处理“window.close”?,ios,swift,xcode,popup,wkwebview,Ios,Swift,Xcode,Popup,Wkwebview,我正在为iOS开发一个WKWebView应用程序,它可以增加现有网站的功能,但我无法更改此网站的源代码 当用户单击某些按钮时,会触发窗口。打开。 我已成功地相应地覆盖委托函数: func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFea

我正在为iOS开发一个WKWebView应用程序,它可以增加现有网站的功能,但我无法更改此网站的源代码

当用户单击某些按钮时,会触发
窗口。打开
。
我已成功地相应地覆盖委托函数:

func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
    let contentController = WKUserContentController()
    let popups = getJSfromURL(url: Bundle.main.path(forResource: "popups", ofType: "js")!)
    contentController.addUserScript(popups)

    let webConfiguration = WKWebViewConfiguration()
    webConfiguration.userContentController = contentController

    let popupView = WKWebView(frame: .zero, configuration: webConfiguration)
    popupView.load(navigationAction.request)
    view = popupView
    return nil
}
在这个弹出窗口中,有一个按钮调用一个
this.close()
,但是浏览器抱怨说,这个按钮无法关闭,因为它不是由javascript打开的

另一个按钮想要设置一些用户已经设置的参数,但是浏览器抱怨,
opener
-参数是
nil


在打开弹出窗口之前,我可以使用注入的javascript以某种方式设置开启器吗?

我已经通过将呈现网站的源设置为弹出窗口的src来解决这个问题

现在,弹出窗口显示在相同的上下文中,可以毫无问题地发回给定的信息

例如:

触发弹出窗口的按钮
New
。/training/NewTraining.aspx
调用javascript函数
showNew()

现在,我只是将此函数添加到注入的javascript中,以便执行:

function showNeu() {
    parent.parent.frames[1].location.href='../training/TrainingNeu.aspx';
}
我还修改了关闭弹出窗口的按钮
Abort
的javascript:

var btnAbort = document.getElementById('ASPxRoundPanel3_btnAbort');
if (btnAbort) {
    btnAbort.onclick = function () {parent.window.location = "/MainPage.aspx";};
}