JQuery不能在ie9.0.8中工作,但可以在开发工具打开的情况下工作



以下内容适用于除ie9.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后它一直起作用。

其他问题说hasClass方法不工作时,类包含一个r字符,但这不是这里的情况。我使用jQuery 1.8.3.

Update:将href改为"#"并将URL写入data-load中没有效果。

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

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

这意味着在您打开它之前,console调用将抛出javascript"对象未定义"错误。这将使它周围的代码看起来不工作,但它实际上只是控制台对象丢失的事实。

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

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

更多信息在这里:为什么JavaScript只工作后打开开发人员工具在IE一次?

相关内容

  • 没有找到相关文章

最新更新