如何确保所有ajax响应处理程序代码在Firefox中正常运行

时间:2018-06-21 15:34:10

标签: javascript jquery firefox

我有一个基于Ajax的应用程序,有时需要基于jquery选择器同时获取多个值。这适用于所有浏览器,但在Firefox中有一个怪癖:一些响应处理程序在奇怪的上下文中运行,从而引起一些怪异:

  • 调试器不会在它们的断点处停止
  • 如果他们收到警报,则其样式会略有不同(其中最明显的部分是宽度)
  • (对我而言,最重要的是)硒看不到警报

所有这些症状使我相信响应处理程序不在正常的单线程javascript引擎上运行。这几乎就像是被移植到线程池之类的东西,但是我找不到任何表明这一点的文档。那么,我的问题是:这是Firefox中的错误,还是我应该做一些事情来确保我的所有响应处理程序都在同一上下文中运行?

这是一个小提琴,演示了我的问题。如果您在打开开发工具的情况下在Chrome中运行它,它将在显示每个警报之前达到断点。但是在Firefox中,总是会立即显示一个警报,并且您只会碰到一个断点。

http://jsfiddle.net/dfaonyku/11/

$(document).ready(function() {
	$('div').each(function() {
  	$.ajax({
    	url: '/echo/json/',
      data: {
      	json: JSON.stringify({'id': this.id}),
      },
      type: 'POST',
      success: function(response, status, xhr) {
      	//console.log(response);
        debugger;
        alert(response.id);
      }
    });
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="foo">

</div>

<div id="bar">

</div>

0 个答案:

没有答案