Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.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
通过UIWebView-Obj C处理JavaScript中的Window.close_Javascript_Ios_Objective C_Uiwebview - Fatal编程技术网

通过UIWebView-Obj C处理JavaScript中的Window.close

通过UIWebView-Obj C处理JavaScript中的Window.close,javascript,ios,objective-c,uiwebview,Javascript,Ios,Objective C,Uiwebview,我最近开始从事一个主要在UIWebView上运行的IOS项目。现在我的UIWebView是UIWebView委托的一个委托人,我遇到的是我的应用程序没有响应窗口。关闭和JavaScript可能调用的其他窗口事件。现在,我可以在我的shouldStartLoadWithRequest委托方法中通过href获取一个新的HTTP请求 我希望知道是否有办法监听window事件,例如window。在我的IOS应用程序中关闭,并检索目标。我想尽量避免将任何类型的JavaScript直接注入页面 有人想解释一

我最近开始从事一个主要在
UIWebView
上运行的IOS项目。现在我的
UIWebView
UIWebView委托的一个委托人,我遇到的是我的应用程序没有响应
窗口。关闭
JavaScript
可能调用的其他
窗口
事件。现在,我可以在我的
shouldStartLoadWithRequest
委托方法中通过
href
获取一个新的
HTTP
请求

我希望知道是否有办法监听
window
事件,例如
window。在我的
IOS
应用程序中关闭
,并检索目标。我想尽量避免将
任何类型的
JavaScript
直接注入页面


有人想解释一下这是否可能以及为什么吗?

使用
UIWebView
如果不注入一些JavaScript,就无法实现这一点。即使是较新的
WKWebView
也需要JavaScript注入来实现这一点

您将注入JavaScript,以覆盖
窗口。关闭
函数并使用类似
location.href=“uni”的内容触发位置更改quescheme://window.close";可以在
shouldStartLoadWithRequest
中处理

比如:

[self.webView stringByEvaluatingJavaScriptFromString:@"window.close = function () { location.href = 'uniquescheme://window.close'; }"]

对于
WKWebView
,有一些方法可以捕获对的调用(实现wkuidegate)

窗口。打开
createWebViewWithConfiguration:forNavigationAction:windowFeatures:

以及

window.close
webViewDidClose:(WKWebView*)webView不可用(10,9,0)

注意,它只提供9.0及以上版本

但不在
UIWebView
中(实际上仍在调查是否可以不用注射就完成,如果我发现任何问题,将更新答案)