自定义NSURLProtocol未在第二个webview中使用

时间:2012-01-11 16:02:35

标签: ios uiwebview webkit nsurlprotocol

我已将NSURLProtocol分包并使用以下代码在didFinishLaunchingWithOptions中注册:

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

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

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

但是我有第二个UIWebView,它位于UIViewController内,在app中的某个位置推送(以模态方式显示)。不会为第二个canInitWithRequest调用UIWebView,因此我无法执行自定义代码。在创建UIWebView的两个实例后注册协议时,情况甚至如此。

任何人都知道为什么?

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

1 个答案:

答案 0 :(得分:2)

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

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

如果cache = true,则objective c将永远不会在同一个url上接收后续请求。