【问题标题】:How does this create an error?这如何产生错误?
【发布时间】:2010-11-29 03:33:47
【问题描述】:

我有一个 jquery/ajax 网站tarh33ls.com 出于某种原因,在 Firefox 中,我收到以下错误:

未捕获的异常:[异常... "组件返回故障码: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMLocation.href]" nsresult: “0x80004005 (NS_ERROR_FAILURE)” 位置:“JS框架:: http://tarh33ls.com/ :: :: 第 26 行“数据:无]

第 0 行

但第 26 行是:

if (location.href.indexOf("#")==-1) {location.href="http://tarh33ls.com/#";}

这将如何产生错误?

【问题讨论】:

  • 非常奇怪......在该行之前进行检查,例如:console.log(location.href);也许 location.href 仍然以某种方式未定义......这似乎在 GC 上工作正常

标签: javascript jquery ajax firefox


【解决方案1】:

我不确定为什么会发生错误,但似乎可以解决它:

if (location.href.indexOf("#") == -1 代码移动到$(document).ready 块内(在它的顶部),如下所示:

$(document).ready(function() {
    if (location.href.indexOf("#") == -1) {
        location.href="http://tarh33ls.com/#";
    }
    $.ajaxSetup({
...etc

【讨论】:

  • 使用 jQuery 在$(document).ready 中包含初始化代码通常是一个好主意,以防止代码在不完整的页面上运行。
  • 什么意思?另外,我会投票赞成你的答案,但我没有足够的代表:P
  • @tarH33ls 如果你有 js 在它之外运行,它会在浏览器看到它时运行。因此,例如,您可能有 js 更改了一些 html 元素,这些元素在源代码中位于 js 之下。代码将尝试运行但找不到 HTML。使用 ready 意味着页面将在运行 js 之前完全加载。 (我希望我很清楚......也许jQuery page on ready 比我解释得更好)
  • 你说得对,我遇到了一些问题...由于没有在 document.ready 中放置一些内联代码,一个脚本之前正在执行...另一个脚本,我通过放置在 document.ready 中修复了它。准备好了,谢谢你的解释
  • 哦,好的,谢谢,我刚开始误会你了,我以为你是说我必须初始化 jQuery
猜你喜欢
  • 2018-03-17
  • 1970-01-01
  • 2014-10-31
  • 2017-02-21
  • 2019-10-22
  • 2011-08-03
  • 2011-01-27
  • 1970-01-01
相关资源
最近更新 更多