无法使用JavaScriptCore和JSContext从UIWebView调用本机所有iOS函数

jni*_*nix 6 javascript objective-c uiwebview ios

让我解释一下我的问题,这让我长时间困扰.任何帮助将不胜感激.请帮忙.

我正在研究iOS中的混合类应用程序.我UIWebView用来从http://myserver.com加载网页(它的例子不是实际的URL)我在这台服务器上托管了多个网页.

我正在使用"JSContext"javascript(从我的服务器加载的网页)UIWebView和本机iOS功能之间进行通信.

我按照UIWebView JavaScript给出的程序失去了对iOS JSContext名称空间(对象)引用,上下文丢失但我已经添加了解决方案中提供的解决方法.然后,UIWebView我的iOS上下文中的一些帧加载的事件正在消失.遵循以下步骤后,上下文消失了.

  1. 我从myserver 加载page1UIWebView.几乎所有功能都适用于所有功能OS本机iOS都是从javascript调用的.
  2. 现在当第二页2作为第1 页中的交互结果加载时,在同一个UIWebView javascript上下文中消失了.

还有一件神奇的事情.如果我直接加载page2 UIWebView而不是间接加载(page1 - > page2).一切正常,所有本机方法都UIwebView按预期调用.请帮忙.如果您想了解更多信息,请询问.

Tom*_*ift 2

首先,以这种方式窃取和使用 UIWebView 的 JavaScriptContext 可能会导致应用程序拒绝。

但如果这只是一个科学项目......

您可以尝试另一种技术来获取 JavaScriptContext。我在这个 GitHub 项目中提出了一个解决方案:

https://github.com/TomSwift/UIWebView-TS_JavaScriptContext

基本上,我使用一些 WebKit 如何工作的知识来在 NSObject 上实现一个类别,以拦截一些非处理的 WebKit 委托方法,这些方法在为框架创建新的 JavaScriptContext 时调用。