Evil Firefox错误 - "底层对象不支持参数或操作"

str*_*ght 24 javascript firefox jquery cors

我想弄清楚这里发生了什么.我已经在这几个小时了,似乎无法控制为什么会发生这种情况.

我正在进行一些AJAX调用,并且我一直只在Mac OS X上的Firefox(版本21)中收到此错误.

这是错误:

 "[Exception... "A parameter or an operation is not supported by the underlying object" 
   code: "15" nsresult: "0x8053000f (InvalidAccessError)"  location: 
   "https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js Line: 6"
Run Code Online (Sandbox Code Playgroud)

我正在进行CORS调用,所以我设置了我的AJAX:

$.ajaxSetup({
        crossDomain: true,
        xhrFields: {
            withCredentials: true
        }

    });
Run Code Online (Sandbox Code Playgroud)

并继续打电话.基本上,有没有人有这个错误的经验?我在网上看到一些帖子,但它们似乎都与跨域CSS有关,我没有使用它.

str*_*ght 30

好吧,经过几个小时的测试(以及@Dave和@danronmoon的精彩讨论,我终于找到了正在发生的事情.

我正在制作的CORS(跨域资源共享)调用被设置为'async:false' - (我意识到我没有在我的原始帖子中包含,因为我认为这是无关紧要的)这个,似乎运行正常除了Firefox之外的所有浏览器,jQuery会咆哮你的,你的ajax调用将失败.

谢谢大家的帮助,我希望这有助于其他人!

  • 好吧如果我想使用async:false怎么办?为什么FF有这个问题?有没有人找到一个解决方法,其中异步需要设置为false? (6认同)
  • 这不是 FF 的真正问题——这是一个 CORS 问题,FF 似乎是唯一一个严格执行它的问题。所有 CORS 调用都必须是异步的(至少在我的研究中)。 (2认同)

Xen*_*nos 6

由于这是第一个duckduckgo结果,InvalidAccessError: A parameter or an operation is not supported by the underlying object我将为此添加另一个来源。

如果您在执行 iframe/window 操作时处理此类错误,那么您可能会被 iframe 的sandbox属性阻止(请参阅https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-iframe -sandbox ) 即使在同一来源。

就我而言,在表单提交成功后iframe尝试执行window.top.location.href = ...。在allow-top-navigation沙箱选项是强制性这样做。有趣的是,这个沙箱选项不是强制重新加载顶部浏览上下文......它只需要在其中导航。