自定义NSURLProtocol不在第二个webview中使用
我已经将子类NSURLProtocol
注册到了didFinishLaunchingWithOptions
并使用以下代码进行注册:
+ (void) registerProtocol
{
static BOOL registered = NO;
if (!registered)
{
[NSURLProtocol registerClass:[MyURLProtocol class]];
registered = YES;
}
}
对于我的应用程序中的第一个UIWebView
(在主窗口中),方法canInitWithRequest
被触发,并且我可以执行我的自定义代码。
不过,我有第二个UIWebView
,这是在应用程序中的某个点(模态地呈现)推送的UIViewController
中。 canInitWithRequest
不会被调用第二个UIWebView
,因此我不能执行我的自定义代码。 在创建UIWebView
两个实例后注册协议时,情况更是如此。
有人知道为什么
d'oh! 我刚刚发现它只是在第二个webview中加载的JavaScript中的一个普通错误:(现在在两个webviews中都像是魅力一样!
不确定这是否与您的情况和解决方案有关,但发布了记录。 经过大量的试验和磨难后发现,如果您希望多次发送相同的URL,则向NSURLProtocol的子类拦截的目标c发送消息的ajax调用应将缓存设置为false。 像这样:
$.ajax({
url:"atavistcommand://" + name,
data:JSON.stringify(data),
type:"GET",
processData:false,
cache:false )};
如果cache = true,那么objective c将永远不会在同一个url上接收到后续请求。
链接地址: http://www.djcxy.com/p/5925.html