2015-02-09 70 views
2

我有2段IE和其他代碼段(Chrome,FF)。 我使用的是IE8,它保持在<!--[if IE]>... <![endif]-->之外,裏面的任何函數都不起作用。然而,它在<!--[if !IE]><!-->....<!--<![endif]-->裏面,我不指望它通過。 (我也嘗試一些更多的語法,如<!-- [if !IE] -->...<!-- [endif] -->,但它似乎不會忽略!)。如果IE條件不起作用

我不確定<meta>標籤是否會導致問題。請看一下。

  <head> 
       <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"/> 
       <meta content="no-cache; post-check=0; pre-check=0" http-equiv="Cache-Control"/> 
       <meta content="no-cache" http-equiv="Pragma"/> 
       <meta content="Thu, 01 Dec 1994 16:00:00 GMT" http-equiv="Expires"/> 

      <!--[if IE]> 
       <script> 
       $(document).ready(function() { 
        $(".exportExcel").click(function(e) { 
         e.stopPropagation(); 
         var table = $("." + $(this).data('target')); 
         var strCopy = $('<div></div>').html(table.clone()).html(); window.clipboardData.setData("Text", strCopy); 
         var objExcel = new ActiveXObject("Excel.Application"); 
         objExcel.visible = false; 
         var objWorkbook = objExcel.Workbooks.Add; 
         var objWorksheet = objWorkbook.Worksheets(1); 
         objWorksheet.Paste; 
         objExcel.visible = true; 
        }); 
       }); 
       </script> 
      <![endif]--> 

      <!--[if !IE]><!--> 
      <script> 
      $(document).ready(
       function() 
       { 
        $(".exportExcel").click(function(e) { 
        e.stopPropagation(); 
        var table = $("." + $(this).data('target')); 
        window.open('data:application/vnd.ms-excel,' + $(table).html()); 
        e.preventDefault(); 
        }); 
       } 
      ); 
      </script> 
      <!--<![endif]--> 
+0

你沒有提到你正在使用的jQuery的版本。如果<1.9,請試試這個:http://api.jquery.com/jquery.browser/如果更大,您將需要使用migrate插件:https://github.com/jquery/jquery-migrate/ – 2015-02-09 21:41:23

+1

真正的問題是,爲什麼人們仍然會使用IE8? – adeneo 2015-02-09 21:46:25

+0

我正在使用jQuery v1.10.2 – 2015-02-09 22:04:56

回答

-1

如果它只是JavaScript,然後你可以檢查瀏覽器版本,並根據瀏覽器上運行不同的功能。

<script> 
    $(document).ready(navigator.appName == 'Microsoft Internet Explorer' ? 
     function(){ /* IE code */ } : 
     function(){ /* Non-IE code */ }); 
</script> 

其他方法來檢測IE:

console.log($.browser.msie); 
console.log('ActiveXObject' in window); 
console.log(!!window.navigator.userAgent.match(/(MSIE |Trident\/)\d+/)); 
+2

'$ .browser'已從jQuery 1.9中刪除,不應使用。 – jfriend00 2015-02-09 21:48:10

+0

您可以隨時使用'navigator.appName =='Microsoft Internet Explorer''來代替。對於那些認爲這不適用於IE11的人來說,這是微軟有意識的,你的非IE代碼可能在IE11中運行良好。 – Pluto 2015-02-09 21:53:57

+0

謝謝你,冥王星,但它不起作用 – 2015-02-09 22:05:46

0

關閉在IE8的兼容模式,然後再試。它只能在標準和怪癖模式下工作。

您是否嘗試過加入meta標籤<meta http-equiv="X-UA-Compatible" content="IE=edge">

這些都是我們的頁面上的標籤和它的作品

<meta charset="utf-8"> 
<meta http-equiv="X-UA-Compatible" content="IE=edge"> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> 
<!-- WARNING: Respond.js doesn't work if you view the page via file:// --> 
<!--[if lt IE 9]> 
    <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> 
    <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script> 
<![endif]--> 
+0

@abcidd你有沒有找到解決這個問題的方法?是否像冥王星關於沒有列出jquery的評論一樣簡單? – ThisClark 2015-02-10 19:41:17

+0

謝謝你,ThisClark非常感謝你的幫助。我還沒有嘗試過''。我很想測試它。 – 2015-02-10 20:20:00

+0

我剛試過,它不起作用。看起來像''content =「IE = edge」'在我的頁面中不起作用 - 它顯示爲空白。非常感謝您的幫助和關注! – 2015-02-10 20:37:15