如何在IE中隐藏JavaScript的一部分

5
这是我的JavaScript函数,用于打开jQuery对话框。
   ('#dialog').append(iframe).appendTo("body").dialog({
          autoOpen: false,
          modal: true,
          resizable: false,
          show: 'slide',        
          width: 800,       
          height: 700,        
         close: function() {           
    }   
});             
$('#dialog_click').click("callback",function() {            
   $('#dialog').dialog('open');                 
   return false;
}); 

我该如何在IE中隐藏 show: 'slide 部分?

window.navigator.userAgent - user1467267
2
你的问题似乎是一个二代问题。例如,真正的问题是你在IE中遇到了slide的问题,这就是为什么你要求在IE中删除它。如果你提出原始问题,你可能能够解决它。 - Fenton
你确定要这样做吗?这是因为旧版本的IE存在特定问题吗?你正在测试哪些版本?你尝试在IE9和IE10中运行过吗?它们实际上是相当不错的浏览器(特别是IE10)。 - Spudley
6个回答

2
var options = {
          autoOpen: false,
          modal: true,
          resizable: false,       
          width: 800,       
          height: 700,        
         close: function() {           
    }   
};
if ( ! $.browser.msie){
  options ['show'] = 'slide';
}

$('#dialog').append(iframe).appendTo("body").dialog(options);  

我很高兴能够帮助。 - Hilmi
注意:jQuery中的$.browser功能已被弃用,并在最新版本中完全删除。这不是推荐使用的(事实上,通常情况下不建议使用浏览器检测)。 - Spudley

2

试试这个

if ( ! $.browser.msie){
  $( "#dialog" ).dialog( "option", "show", "slide" )
} 

注意:jQuery中的$.browser功能已被弃用,并在最新版本中完全删除。这不是推荐使用的(事实上,一般情况下不建议使用浏览器检测)。 - Spudley

2
$('#dialog').append(iframe).appendTo("body").dialog({
          autoOpen: false,
          modal: true,
          resizable: false,       
          width: 800,       
          height: 700,        
         close: function() {           
    } 
});

if(!$.browser.msie) {
     $( "#dialog" ).dialog( "option", "show", "slide" );
}

我尝试了这个,但在我的情况下它不起作用。当我添加了这个时,对话框没有打开。代码还有其他问题吗? - Mohamed
注意:jQuery中的$.browser功能已被弃用,并在最新版本中完全删除。这不是推荐使用的(事实上,一般情况下不建议使用浏览器检测)。 - Spudley

2

jQuery在版本>=1.9中已经移除了对jQuery.browser.msie的支持。

因此,

var opts = {
    autoOpen : false,
    modal : true,
    resizable : false,
    show : 'slide',
    width : 800,
    height : 700,
    close : function() {
    }
};
if (!/msie/.test(window.navigator.userAgent)) {
    opts.show = 'slide';
}

('#dialog').append(iframe).appendTo("body").dialog(opts);
$('#dialog_click').click("callback", function() {
    $('#dialog').dialog('open');
    return false;
});

2

有几种临时解决方案可以应对这个问题(例如为整个脚本使用条件注释,稍后更改属性等),但是没有人提供过完全符合您需求的解决方案:仅在IE中排除一部分JavaScript代码

那么,请看这个:

   ('#dialog').append(iframe).appendTo("body").dialog({
          autoOpen: false,
          modal: true,
          resizable: false,

        /*@cc_on @*/
        /*@if (true)

        @else @*/
          show: 'slide',        
        /*@end @*/

          width: 800,       
          height: 700,        
         close: function() {           
    }   
});             
$('#dialog_click').click("callback",function() {            
   $('#dialog').dialog('open');                 
   return false;
}); 

IE浏览器不支持show: 'slide',而非IE浏览器无法读取条件编译语句,因此条件将落入(未注释的)else部分。

了解更多关于条件编译语句的信息。


0

有几件事情你可以做。

首先,有条件注释,即

<!--[if !IE ]>
    <script>
       $('#dialog').append(iframe).appendTo("body").dialog({
         autoOpen: false,
         modal: true,
         resizable: false,
         show: 'slide',        
         width: 800,       
         height: 700,        
         close: function() {           
         }   
       });             
       $('#dialog_click').click("callback",function() {            
         $('#dialog').dialog('open');                 
         return false; 
       }); 
    </script>
<![endif]-->

或者你可以检查jQuery浏览器变量,就像其他人指出的那样。

另外,如果你想要针对旧版本的IE,你可以使用一些特定于它的函数(比如attachEvent)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接