【问题标题】:JQuery not working in IE 9.0.8, but works with dev tools openJQuery 在 IE 9.0.8 中无法使用,但可以在开发工具打开的情况下使用
【发布时间】:2013-05-22 05:09:27
【问题描述】:

以下适用于除 IE 9.0.8 以外的所有浏览器。它使用 ajax 请求在 div 中加载调查表单。

$('.tab-content').on('click', '.show_survey_form', function(e) {
  e.preventDefault()
  target = $(this).attr("data-target")
  my_href = $(this).attr("href")
  console.log("load: " + target + "   target: " + my_href)
  // load: #survey_response_form_33   target: /surveys/33/survey_responses/edit_multiple

  // Don't make a request unless the form is opening.
  if ($(this).hasClass('collapsed')) {
    console.log("Making request!")
    //$(target).load(my_href)
    $(this).html(closeSurveyForm) // Just changes the language on the button
  } else {
    $(this).html(respondToSurvey) // Just changes the language on the button
  }
}

.load 在调试期间被注释掉。 IE 在这种情况下使用 .hasClass 似乎有问题。它在其他地方使用没有问题。

真正奇怪的是,当我打开开发工具窗口的那一刻,它就开始工作了。在此之前它始终不起作用,并且在击中 F12 后始终起作用。

其他问题表明当类包含 \r 字符时 hasClass 方法不起作用,但这里不是这种情况。我正在使用 jQuery 1.8.3。

更新:将 href 更改为“#”并将 URL 写入 data-load 没有效果。除 IE 9.0.8 之外的所有浏览器仍然有效。

【问题讨论】:

  • 明确一点,它适用于除 IE9.0.8 之外的所有浏览器。这是否意味着它可以在 IE9 的其他版本中使用? IE8 或 IE10 怎么样?这真的像您暗示的那样特定于版本,还是只是您正在测试它的版本?
  • 我敢打赌,线索就在你说“只要我打开开发工具 F12 就可以工作”的地方。我认为这是 console.log 在打开 F12 之前无法正常工作的另一个旧问题。见this question for a full answer
  • 在 IE8 和 IE 10 下都可以使用。我没有用其他版本的 IE9 测试过。
  • 你试过没有console 电话吗?因为关于开发工具的那一点使它听起来像是“未定义控制台”问题的一个非常经典的案例。
  • 我的意思是IE在打开F12之前没有定义console对象,所以如果你在代码中有console.log并且不打开F12,那么它将完全失败你描述的方式。你是对的,控制台不是问题的焦点,你也是对的,使用alert() 在测试异步代码时会出现其他问题,但我认为如果你完全删除你的调试代码,它会起作用.如果我错了,那么我不知道问题出在哪里,但是发布一个 jsfiddle 示例,我会看看是否可以解决(如果我有时间!)。

标签: internet-explorer-9 jquery-1.8


【解决方案1】:

这与 jQuery 或 hasClass() 无关。这完全取决于您对console.log() 的使用。

重要的是要知道,在 F12 开发工具窗口打开之前,IE 不会定义 console 对象。

这意味着在您打开它之前,console 调用将引发 javascript“对象未定义”错误。这会使它周围的代码看起来不起作用,但实际上只是缺少控制台对象。

您可能在其他较旧的浏览器中也有类似的效果,但大多数当前浏览器版本都不会这样做——它们会立即定义console 对象,而不管开发工具是否打开。 IE 是唯一的例外。

您可以通过 (a) 不使用 console 来解决此问题,除非您实际上正在调试并打开开发工具,或者 (b) 在您的所有 console 调用中添加 if(console) 检查。这将防止错误。

更多信息在这里:Why does JavaScript only work after opening developer tools in IE once?

【讨论】:

  • 感谢您的解释,它也帮助了我:)
猜你喜欢
  • 2012-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-21
  • 1970-01-01
相关资源
最近更新 更多