2012-06-03 82 views
-2

我在網上找到了一些HTML代碼來幫助我做到這一點,但是當我在Firefox或Internet Explorer上嘗試時,它不起作用。我可以幫助嘗試實現嗎?如何根據瀏覽器將客戶端重定向到其他頁面?

這裏是我發現

<script language="JavaScript" type="text/JavaScript"> 
    if(navigator.appName == "Mozilla") 
    { 
    window.location = "ff/index.html" 
    } 
    if(navigator.appName == "Microsoft Internet Explorer") 
    { 
    window.location = "ie/index.html" 
    } 
    if(navigator.appName == "Google Chrome") 
    { 
    window.location = "ch/index.html" 
    } 
    if(navigator.appName == "Safari") 
    { 
    window.location = "sa/index.html" 
    } 
    if(navigator.appName == "Google Chrome") 
    { 
    window.location = "ch/index.html" 
    } 
    window.location == "un/index.html" 
    </script> 

回答

0

試圖確定在JavaScript的瀏覽器的代碼始終是棘手的,從不可靠。在你的情況下,它不起作用,因爲Firefox中的navigator.appName(至少版本12.0)返回... "Netscape"

更可靠的一點是使用navigator.userAgent,它在我的電腦上返回:""Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0""

更好的是,請查看$.browser - 由於某種原因已棄用,請參閱上文。

這給我們帶來了一個問題:爲什麼你需要這個?現代Web應用程序應該發現瀏覽器功能,而不是依賴實際的瀏覽器。

PS:你粘貼的代碼真的很冗長,那麼這個等效代碼片段呢?

var redirects = { 
    "Mozilla": "ff", 
    "Microsoft Internet Explorer": "ie", 
    "Google Chrome": "ch", 
    "Safari": "sa", 
    "Google Chrome": "ch" 
}; 

window.location = (redirects[navigator.appName] || "un") + "/index.html"; 
0

我最喜歡的劇本是這樣的一個 - http://www.quirksmode.org/js/detect.html也最現代化的圖書館都建於(例如jQuery的browser對象)

然而,強烈建議使用功能檢測,而不是瀏覽器檢測器檢測。看看Modernizr圖書館是我正在談論的一個很好的例子。

0

試試這個代碼 -

<script language="JavaScript" type="text/JavaScript"> 
    if(navigator.appCodeName == "Mozilla") 
    { 
    window.location.href = "ff/index.html" 
    } 
    if(navigator.appCodeName == "Microsoft Internet Explorer") 
    { 
    window.location.href = "ie/index.html" 
    } 
    if(navigator.appCodeName == "Google Chrome") 
    { 
    window.location.href = "ch/index.html" 
    } 
    if(navigator.appCodeName == "Safari") 
    { 
    window.location.href = "sa/index.html" 
    } 
    if(navigator.appCodeName == "Google Chrome") 
    { 
    window.location.href = "ch/index.html" 
    } 
    window.location.href = "un/index.html" 
    </script> 
0

由於沒有上述腳本足夠的情況下工作,包括一些基本的重定向到「火狐37.x」(!!) - 最差的幸福「谷歌瀏覽器」(很固執) - 現在:唯一的 「老派」 *的方式,我發現WORKING

http://www.javascripter.net/faq/browsern.htm

下圖:我的修改(魁CK /髒/歡迎您清潔)「版本」,因爲我們想在這裏的是一個重定向,而不是顯示的瀏覽器代碼名稱等

  • 注:筆者KWOWS,關於整體方法瑕疵 - 並警告。

我認爲任何人誰讀這已經明白,對象檢測/瀏覽器功能檢測是目前(9月2015)晉升爲一個更好的方法 - 除了...這:

所有的第一次,它也不是100%可靠的;最重要的是,人們可能需要一種更簡單的方法,或者更快,尤其是當需要修改現有網站(儘可能少)時,而不必重新編碼幾乎所有東西,切換到CSS等等。年齡!

測試使用:http://www.w3schools.com/html/tryit.asp?filename=tryhtml_default

http://stackoverflow.com作爲測試重定向URL似乎不工作,即W3Schools的頁面上,無論是谷歌的,而個人網站的URL的工作)

<!DOCTYPE html><html><head> 
<script language="JavaScript" type="text/JavaScript"> 

var nVer = navigator.appVersion; 
var nAgt = navigator.userAgent; 
var browserName = navigator.appName; 
var fullVersion = ''+parseFloat(navigator.appVersion); 
var majorVersion = parseInt(navigator.appVersion,10); 
var nameOffset,verOffset,ix; 

// In Opera 15+, the true version is after "OPR/" 
if ((verOffset=nAgt.indexOf("OPR/"))!=-1) { 
browserName = "Opera"; 
fullVersion = nAgt.substring(verOffset+4); 
} 
// In older Opera, the true version is after "Opera" or after "Version" 
else if ((verOffset=nAgt.indexOf("Opera"))!=-1) { 
browserName = "Opera"; 
fullVersion = nAgt.substring(verOffset+6); 
if ((verOffset=nAgt.indexOf("Version"))!=-1) 
    fullVersion = nAgt.substring(verOffset+8); 
} 
// In MSIE, the true version is after "MSIE" in userAgent 
else if ((verOffset=nAgt.indexOf("MSIE"))!=-1) { 
browserName = "Microsoft Internet Explorer"; 
fullVersion = nAgt.substring(verOffset+5) 
window.location.href = "http://stackoverflow.com" 
} 
// In Chrome, the true version is after "Chrome" 
else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) { 
browserName = "Chrome"; 
fullVersion = nAgt.substring(verOffset+7) 
window.location.href = "http://www.w3schools.com" 
} 
// In Safari, the true version is after "Safari" or after "Version" 
else if ((verOffset=nAgt.indexOf("Safari"))!=-1) { 
browserName = "Safari"; 
fullVersion = nAgt.substring(verOffset+7); 
if ((verOffset=nAgt.indexOf("Version"))!=-1) 
    fullVersion = nAgt.substring(verOffset+8); 
} 
// In Firefox, the true version is after "Firefox" 
else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) { 
browserName = "Firefox"; 
fullVersion = nAgt.substring(verOffset+8) 
window.location.href = "http://stackoverflow.com" 
} 
// In most other browsers, "name/version" is at the end of userAgent 
else if ((nameOffset=nAgt.lastIndexOf(' ')+1) < 
      (verOffset=nAgt.lastIndexOf('/'))) 
{ 
browserName = nAgt.substring(nameOffset,verOffset); 
fullVersion = nAgt.substring(verOffset+1); 
if (browserName.toLowerCase()==browserName.toUpperCase()) { 
    browserName = navigator.appName; 
} 
} 
// trim the fullVersion string at semicolon/space if present 
if ((ix=fullVersion.indexOf(";"))!=-1) 
    fullVersion=fullVersion.substring(0,ix); 
if ((ix=fullVersion.indexOf(" "))!=-1) 
    fullVersion=fullVersion.substring(0,ix); 

majorVersion = parseInt(''+fullVersion,10); 
if (isNaN(majorVersion)) { 
fullVersion = ''+parseFloat(navigator.appVersion); 
majorVersion = parseInt(navigator.appVersion,10); 
} 

</script></head><body> 
相關問題