相关疑难解决方法(0)

如果我没有使用绑定或单击已绑定事件处理程序,我可以调用jquery click()来跟随<a>链接吗?

我的JavaScript中有一个计时器,需要模拟点击一个链接,一旦时间流逝就转到另一个页面.要做到这一点,我正在使用jQuery的click()功能.我已经使用$().trigger()window.location也,我可以作出打算与所有三个它的工作.

我观察到一些奇怪的行为,click()我试图了解发生了什么以及为什么.

我正在使用Firefox来解决这个问题,但我也对其他浏览器会对此做些什么感兴趣.

如果我没有使用$('a').bind('click',fn)$('a').click(fn)设置事件处理程序,那么调用$('a').click()似乎什么都不做.它不会为此事件调用浏览器的默认处理程序,因为浏览器不会加载新页面.

但是,如果我首先设置一个事件处理程序,那么即使事件处理程序什么都不做,它也会按预期工作.

$('a').click(function(){return true;}).click();
Run Code Online (Sandbox Code Playgroud)

这会加载新页面,就像我自己点击了一样.

所以我的问题是双重的:这种奇怪的行为是因为我在某处做错了吗?click()如果我没有创建自己的处理程序,为什么调用对默认行为不起作用?

编辑:

当霍夫曼确定他试图复制我的结果时,我上面描述的结果实际上并没有发生.我不确定是什么原因引起了我昨天观察到的事件,但我今天肯定这不是我在问题中所描述的.

所以答案是你不能在浏览器中"伪造"点击并且所有jQuery都会调用你的事件处理程序.您仍然可以使用window.location更改页面,这对我来说很好.

javascript firefox jquery events click

175
推荐指数
6
解决办法
42万
查看次数

如何使用NSURLProtocol模拟AJAX调用?

我有UIWebview,它对外部服务进行AJAX调用.离线时我需要捕获这些请求并返回本地json.

我实现了NSURLProtocol,我设法捕获AJAX请求,问题是jquery总是返回0错误代码:

$.ajax({
  url: url,
  dataType: 'json',
  contentType: "application/json",
  success: function(jsonData){
    alert("success :");
  },
  error: function (request, status, error) {
    alert("failure :" + request.status );
  }
Run Code Online (Sandbox Code Playgroud)

});

我总是得到一个request.status = 0

为了测试我的协议,我试图在我的html中模拟一个图像并且效果很好.

  • 来自google.fr =>的图片的HTML请求正常工作
  • AJAX调用amazon上的json => 失败

这是我的完整实现:

#import "EpubProtocol.h"

@implementation EpubProtocol

#pragma mark - NSURLProtocol

+ (BOOL)canInitWithRequest:(NSURLRequest *)request {
    BOOL awsRequest = [self request:request contains:@"s3.amazonaws.com"];
    BOOL imgRequest = [self request:request contains:@"google.fr"];
    BOOL match = awsRequest || imgRequest;

    return match;
}


+ (NSURLRequest*)canonicalRequestForRequest:(NSURLRequest*)theRequest
{
    return theRequest;
}


- (void)startLoading { …
Run Code Online (Sandbox Code Playgroud)

ajax uiwebview nsurlprotocol ios

14
推荐指数
1
解决办法
9851
查看次数

标签 统计

ajax ×1

click ×1

events ×1

firefox ×1

ios ×1

javascript ×1

jquery ×1

nsurlprotocol ×1

uiwebview ×1