2013-07-04 55 views
-3

我的網站只適用於IE8及更高版本。 如何限制使用開發人員工具向用戶使用版本更改? 有沒有辦法限制使用JQuery的?如何限制我的網站只能使用IE8及更高版本

這是我的javascript來查找用戶代理的瀏覽器模式和文檔模式,但我不限制用戶將瀏覽器和文檔模式更改爲IE7。

<script type="text/javascript"> 
/* 
* Author: Rob Reid 
* CreateDate: 20-Mar-09 
* Description: Little helper function to return details about IE 8 and its various compatibility settings either use as it is 
* or incorporate into a browser object. Remember browser sniffing is not the best way to detect user-settings as spoofing is 
* very common so use with caution. 
*/ 
$(function(){ 
var browserInfo = IEVersion(); 
console.log($('meta')); 
    alert(browserInfo.DocMode); 
    $('meta').attr('rel','IE=7'); 
}); 
function IEVersion() 
{ 
    var _n = navigator, _w = window, _d = document; 
    var version = "NA"; 
    var na = _n.userAgent; 
    var ieDocMode = "NA"; 
    var ie8BrowserMode = "NA"; 
    // Look for msie and make sure its not opera in disguise 
    if (/msie/i.test(na) && (!_w.opera)) 
    { 
     // also check for spoofers by checking known IE objects 
     if (_w.attachEvent && _w.ActiveXObject) 
     { 
      // Get version displayed in UA although if its IE 8 running in 7 or compat mode it will appear as 7 
      version = (na.match(/.+ie\s([\d.]+)/i) || [])[1]; 
      // Its IE 8 pretending to be IE 7 or in compat mode    
      if (parseInt(version) == 7) 
      { 
       // documentMode is only supported in IE 8 so we know if its here its really IE 8 
       if (_d.documentMode) 
       { 
        version = 8; //reset? change if you need to 
        // IE in Compat mode will mention Trident in the useragent 
        if (/trident\/\d/i.test(na)) 
        { 
         ie8BrowserMode = "Compat Mode"; 
         // if it doesn't then its running in IE 7 mode 
        } else 
        { 
         ie8BrowserMode = "IE 7 Mode"; 
        } 
       } 
      } else if (parseInt(version) == 8) 
      { 
       // IE 8 will always have documentMode available 
       if (_d.documentMode) { ie8BrowserMode = "IE 8 Mode"; } 
      } 
      // If we are in IE 8 (any mode) or previous versions of IE we check for the documentMode or compatMode for pre 8 versions       
      ieDocMode = (_d.documentMode) ? _d.documentMode : (_d.compatMode && _d.compatMode == "CSS1Compat") ? 7 : 5; //default to quirks mode IE5                  
     } 
    } 

    return { 
     "UserAgent": na, 
     "Version": version, 
     "BrowserMode": ie8BrowserMode, 
     "DocMode": ieDocMode 
    } 
} 

function DisplayInfo() 
{ 
    var browserInfo = IEVersion(); 
    alert('UserAgent: ' + browserInfo.UserAgent + '\nVersion: ' + browserInfo.Version + '\nBrowserMode: ' + browserInfo.BrowserMode + '\nDocMode: ' + browserInfo.DocMode); 
} 

+1

如果您已經在使用jQuery,爲什麼不使用類似jquery.browser插件? – mishik

+3

你不能,只是在一個非常明顯的地方寫下「這只是用ie8或更高版本來查看」的消息,任何你試圖繞過的東西 – jsedano

+0

如果你已經在使用jQuery,爲什麼不使用類似的東西jquery.browser插件 –

回答

0

您可以使用像這樣的一些條件註釋:

<!--[if IE 6]> 
Special instructions for IE 6 here 
<![endif]--> 

你可以找到更多關於這個here

1

儘量不要因爲這會惹惱很多可能的用戶和力他們到競爭對手的網站。

不可否認的是,如果您使用的是ActiveX控件,您可能無法對選擇的瀏覽器做很多事情。

+0

僅適用於第一段。用戶仍然可以使用部分損壞的網站。他們不能使用啓動頁面來告訴他們升級 – Bojangles

0

如何限制使用jQuery

是不可能的。如果是好的練習或不好的話,無所謂。您無法通過jQuery或Javascript爲此改變瀏覽器設置。

當有史以來用戶嘗試使用的開發工具來更改版本

我認爲你可以做的就是用這個元標記爲內部頭的第一個東西:

<meta http-equiv="X-UA-Compatible" content="IE=edge" /> 

這將迫使IE退出兼容模式並使用最新版本,無論它是什麼。

當您使用像ASP.Net這樣的服務器端框架時,您無法確定這將作爲頭內的第一個標籤。另外

HttpContext.Current.Response.AddHeader("X-UA-Compatible", "IE=Edge") 

,你也可以從Web服務器推頭例如:因此,例如在ASP.Net您可以在PreInit寫IIS。

相關問題