javascript更改为DOM在IE中无法正常工作

时间:2014-02-01 02:13:40

标签: javascript internet-explorer dom

该网站为http://www.basketbasics.com点击,例如,Dyes。

此例程使用jquery模块jquery.sticky.js;该模块似乎不是问题。

代码具有避免IE的语言,但这对IE11不起作用。我更喜欢找到一个修复程序,因此它适用于所有最新版本的IE。

启动时,会调用Sidecart()。

当您订购某物(将数量放入某个字段然后移出该字段)时,会调用ajax将数据添加到会话变量中。回调是callbackSubmit()(这里的参数东西并不重要。)

function callbackSubmit(stuff) { if ( navigator.userAgent.indexOf('MSIE') == -1 ) {Sidecart() } }

function Sidecart() {
$("#orderbody").children().detach().remove();
$.ajax({
    url:'Sidecart.cfm',
    //Sidecart.cfm outputs the session info and returns the data read in the callback
    success:function(data){callbakSidecart(data)},
    error: function(e){ console.log(e); }
});
}

function callbakSidecart(stuff) {
var x = stuff.split('|');
var z = parseInt(x[0])*3+2;
if ( x[0] > 0 ) {
    for ( var i = 2; i<z;i+=3 ){
        $('#orderbody').append("<tr><td colspan='2' class='smaller'>" + x[i] + "</td></tr><tr><td class='smaller'>" + x[i+1] + "</td><td class='smaller'>" + x[i+2] + "</td></tr><tr><td colspan='2'><hr></td></tr>");
    }
    $('#orderbody').append('<tr><td colspan="2">Total: ' + x[1] + '</td></tr>');
}
}

它引用的结构是一个带有tbody id = orderbody

的表

欢迎提供更好代码的建议,但我不关心表格是如何坏等等。问题是为什么它在FF,Chrome,Opera和Safari中有效但在IE中无效?

1 个答案:

答案 0 :(得分:1)

IE11不再报告为MSIE,根据此更改列表,它是故意避免错误检测。如果你真的想知道IE,那么你可以做的就是在navigator.appName返回Netscape时检测用户代理中的Trident /字符串,类似于(未经测试的);

所以,使用这个功能

function getInternetExplorerVersion()
{
  var rv = -1;
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  else if (navigator.appName == 'Netscape')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}