通过 UIWebView 处理 JavaScript 中的 Window.close - Obj C
Handling Window.close in JavaScript through UIWebView - Obj C
我最近开始从事一个主要在 UIWebView
上运行的 IOS 项目。现在我的 UIWebView
是 UIWebViewDelegate
的代表,我遇到的是我的应用程序不响应 window.close
和 JavaScript
可能调用的其他 window
事件.现在我可以在我的 shouldStartLoadWithRequest
委托方法中通过 href
接收一个新的 HTTP
请求。
我希望知道是否有办法在我的 IOS
应用程序中监听 window
事件,例如 window.close
并检索目标。我想尽可能远离 injecting
任何类型的 JavaScript
直接进入页面!
有人愿意解释这是否可能以及为什么吗?
使用 UIWebView
不注入一些 JavaScript 就无法实现这一点。即使是较新的 WKWebView
仍然需要 JavaScript 注入才能完成这项工作。
您将注入 JavaScript 来覆盖 window.close
函数并触发位置更改,例如 location.href = "uniquescheme://window.close";
,正如您所说,可以在 [=15= 中处理].
类似于:
[self.webView stringByEvaluatingJavaScriptFromString:@"window.close = function () { location.href = 'uniquescheme://window.close'; }"]
对于 WKWebView
有一些方法可以捕获对(实现 WKUIDelegate)的调用
window.open
: createWebViewWithConfiguration: forNavigationAction: windowFeatures:
和
window.close
: webViewDidClose:(WKWebView *)webView NS_AVAILABLE(10_11, 9_0)
请注意,它仅适用于 9.0 及更高版本。
但 UIWebView
中没有(实际上仍在调查是否可以在不注入的情况下完成,如果找到任何答案,我会更新答案)
我最近开始从事一个主要在 UIWebView
上运行的 IOS 项目。现在我的 UIWebView
是 UIWebViewDelegate
的代表,我遇到的是我的应用程序不响应 window.close
和 JavaScript
可能调用的其他 window
事件.现在我可以在我的 shouldStartLoadWithRequest
委托方法中通过 href
接收一个新的 HTTP
请求。
我希望知道是否有办法在我的 IOS
应用程序中监听 window
事件,例如 window.close
并检索目标。我想尽可能远离 injecting
任何类型的 JavaScript
直接进入页面!
有人愿意解释这是否可能以及为什么吗?
使用 UIWebView
不注入一些 JavaScript 就无法实现这一点。即使是较新的 WKWebView
仍然需要 JavaScript 注入才能完成这项工作。
您将注入 JavaScript 来覆盖 window.close
函数并触发位置更改,例如 location.href = "uniquescheme://window.close";
,正如您所说,可以在 [=15= 中处理].
类似于:
[self.webView stringByEvaluatingJavaScriptFromString:@"window.close = function () { location.href = 'uniquescheme://window.close'; }"]
对于 WKWebView
有一些方法可以捕获对(实现 WKUIDelegate)的调用
window.open
: createWebViewWithConfiguration: forNavigationAction: windowFeatures:
和
window.close
: webViewDidClose:(WKWebView *)webView NS_AVAILABLE(10_11, 9_0)
请注意,它仅适用于 9.0 及更高版本。
但 UIWebView
中没有(实际上仍在调查是否可以在不注入的情况下完成,如果找到任何答案,我会更新答案)