通过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
中(实际上仍在调查是否可以不用注射就完成,如果我发现任何问题,将更新答案)