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

标签 javascript ios objective-c uiwebview

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

我希望知道是否有办法在我的 IOS 应用程序中监听 window 事件,例如 window.close 并检索目标。我想尽可能避免注入(inject)任何类型的 JavaScript 直接进入页面!

有人愿意解释这是否可能以及为什么吗?

最佳答案

使用 UIWebView 如果不注入(inject)一些 JavaScript,就无法实现这一点。即使是较新的 WKWebView 也仍然需要 JavaScript 注入(inject)才能完成这项工作。

您将注入(inject) JavaScript 来覆盖 window.close 函数并触发位置更改,例如 location.href = "uniquescheme://window.close"; 正如您所说,可以在 shouldStartLoadWithRequest 中处理。

类似于:

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

关于javascript - 通过 UIWebView 在 JavaScript 中处理 Window.close - Obj C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31842899/

相关文章:

ios - 将 UIImageView 设置为 nil

ios - 在Xcode Beta中分发内部版本时,“IPA处理失败”

ios - NSDictionary 丢失数据?

iphone - 在 UIWebView 中显示 .rtf 文件

ios - NSTimer 启动时出现异常

javascript - 在 cookie 中保存背景颜色

javascript - 异步函数按顺序运行,为什么?

javascript - 即使正在检查其中一个 radio ,表单仍然返回 false

javascript - 在我的函数中,它运行 document.write 是我指定的 10 倍

ios - iOS 推送通知