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

时间:2014-04-14 16:25:18

标签: javascript ios objective-c uiwebview

让我解释一下我的问题,这让我很久没有烦恼。任何帮助将不胜感激。请帮忙。

我正在研究iOS中的混合类应用程序。我使用UIWebViewhttp://myserver.com加载网页(其示例不是实际网址)我在此服务器上托管了多个网页。

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

我遵循UIWebView JavaScript losing reference to iOS JSContext namespace (object)给出的程序,上下文已经丢失,但我已添加解决方案中提供的解决方法。 事件然后在UIWebView内的某些帧加载我的iOS上下文正在消失。 遵循以下步骤后,上下文消失了。

  1. 我在UIWebView的myserver中加载 page1 。几乎所有功能都适用于所有功能OS本机iOS都是从 javascript
  2. 调用的
  3. 现在,当第二页2作为 page1 中的互动结果加载时,在相同的UIWebView javascript 上下文中消失了。
  4. 还有一件神奇的事情。如果我在UIWebView中直接加载page2而不是间接加载(第1页 - > 第2页)。一切正常,所有本地方法都按照预期从UIwebView调用。 请帮忙。如果您想了解更多信息,请询问。

1 个答案:

答案 0 :(得分:2)

首先,以这种方式窃取和使用UIWebView的JavaScriptContext可能是应用拒绝的途径。

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

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

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

基本上我正在使用一些知识来了解WebKit如何在NSObject上实现一个类别来拦截一些非handeled WebKit委托方法,这些方法在为一个帧创建一个新的JavaScriptContext时被调用。