Fancybox 发出不需要的同步请求?

Fancybox makes unwanted synchronous request?

我有公式,我想通过 ajax 提交。因此,我正在使用 jquery form plugin。嗯,这很好用。

我收到一个 html 页面,我想将它传递给 fancybox (v2.0)。但是如果我要打开 fancybox,我会收到这个众所周知的 chrome 警告:

Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.

因此,我想知道两件事:

  1. 为什么会出现这个警告,是因为我的ajax请求的fancybox是否使用了async = false之类的。好吧,据我所知,我检查了fancybox的源代码,所以...
  2. 为什么我第二次尝试提交表单时出现以下错误?

    Uncaught TypeError: $(...).ajaxSubmit is not a function.

    我感觉,警告出现后,导致警告的函数从上下文中删除,因此不可调用... ?!

如果我不使用 fancybox - 例如当我只是调用 console.log(result) - 我不会收到错误。所以我想 fancybox 一定有问题。

为什么我不直接在fancybox的内容中调用我要加载的页面的url,正常人会这样做?好吧,因为 fancybox 没有将 post 数据传递给 url 的选项,因此我需要提交表单。 发送获取数据是不可能的。


这是有问题的代码:)

$(domObject).ajaxSubmit({
    dataType: "html",
    success:  function(result) {
        $.fancybox.open({
            padding:    0,
            margin:     0,
            content:    result,
            autoSize:   false
        });
    }
});

尝试使用下面的代码:

$(domObject).ajaxSubmit({
   dataType: "html",
   async: true,
   success:  function(result) {
     $.fancybox(result, {
        padding:    0,
        margin:     0,
        content:    result,
        autoSize:   false
     });
   }
});

我发现,如果您传递给 fancybox 的内容中有带有 src 属性的脚本标签,则会出现错误。

我猜想,fancybox 会缓冲内容并等待所有 javascript 文件加载...但这只是一个错误的猜测,因为在具有 href 属性的 link 标签上行为不会发生。

目前我可以轻松绕过这个问题,但我会为 fancybox 打开一个问题。