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

时间:2015-08-05 21:11:27

标签: javascript ios objective-c uiwebview

我最近开始研究一个主要在UIWebView上运行的IOS项目。现在我的UIWebViewUIWebViewDelegate的代表,我遇到的是我的应用不响应window.close以及window可能调用的其他JavaScript个事件。现在,我可以通过HTTP委托方法中的href获取新的shouldStartLoadWithRequest请求。

我希望知道是否有办法在我的window应用中监听window.closeIOS事件并检索目标。我希望尽可能多地将injecting任意JavaScript的{​​{1}}误导到页面中!

任何人都在关心是否可能这样做以及为什么?

2 个答案:

答案 0 :(得分:3)

使用UIWebView,如果不注入一些JavaScript,就无法实现这一目标。即使是较新的WKWebView,仍然需要使用JavaScript注入才能实现这一功能。

您会注入一些覆盖window.close功能的JavaScript,并使用location.href = "uniquescheme://window.close";之类的内容来触发位置更改,正如您所说,可以在shouldStartLoadWithRequest中处理。

类似的东西:

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

答案 1 :(得分:3)

对于WKWebView,有一些方法可以捕获(实现WKUIDelegate)

window.opencreateWebViewWithConfiguration: forNavigationAction: windowFeatures:

window.closewebViewDidClose:(WKWebView *)webView NS_AVAILABLE(10_11, 9_0)

请注意,它只能提供9.0及更高版本。

但不在UIWebView中(实际上还在调查是否可以在没有注射的情况下完成,如果我找到任何答案就会更新答案)