1

我已经使用以下代码NSURLProtocol对其进行了子类化和注册:didFinishLaunchingWithOptions

+ (void) registerProtocol 
{
   static BOOL registered = NO;

   if (!registered) 
   {
      [NSURLProtocol registerClass:[MyURLProtocol class]];
      registered = YES;
   }
}

对于UIWebView我的应用程序中的第一个(在主窗口中),该方法canInitWithRequest被触发,我可以执行我的自定义代码。

但是我有第二个UIWebView,它UIViewController在应用程序中的某个点被推送(以模态方式呈现)。将canInitWithRequest不会为第二个调用UIWebView,因此我无法执行我的自定义代码。在创建两个实例之后注册协议时甚至是这样UIWebView

有谁知道为什么?

[编辑] 哦!我刚刚发现它只是加载在第二个 webview 中的 javascript 中的一个简单错误 :( 现在在两个 webview 中都像一个魅力!

4

1 回答 1

2

不确定这是否与您的情况和解决方案有关,但张贴记录。经过多次试验和磨难,今天发现,如果您希望多次发送相同的 url,则 ajax 调用向目标 c 发送消息,该消息将被 NSURLProtocol 的子类拦截,应该将缓存设置为 false。像这样:

$.ajax({
       url:"atavistcommand://" + name,
       data:JSON.stringify(data),
       type:"GET",
       processData:false,
       cache:false )};

如果 cache = true 那么目标 c 将永远不会在同一 url 上接收后续请求。

于 2012-11-02T18:57:44.850 回答