html頁面識別當前系統和語言

来源:http://www.cnblogs.com/mokeyish/archive/2016/02/27/5222662.html
-Advertisement-
Play Games

項目中需要一個下載功能,根據系統跳轉到不同的頁面,如iphone跳轉到IOS頁面,android跳轉到android頁面。 下麵為頁面判斷頁面: <!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>手機AP


項目中需要一個下載功能,根據系統跳轉到不同的頁面,如iphone跳轉到IOS頁面,android跳轉到android頁面。

下麵為頁面判斷頁面:

<!DOCTYPE HTML>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>手機APP下載頁面:根據終端辨別下載地址</title>
    <script type="text/javascript">
        // 獲取終端的相關信息
        var Terminal = {
            // 辨別移動終端類型
            platform : function(){
                var u = navigator.userAgent, app = navigator.appVersion;
                
                return {
                    //IE內核
                    windows: u.indexOf('Windows') > -1, 
                    //opera內核 
                    presto: u.indexOf('Presto') > -1, 
                    //蘋果、谷歌內核
                    webKit: u.indexOf('AppleWebKit') > -1, 
                    //火狐內核
                    gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, 
                    //是否為移動終端
                    mobile: !!u.match(/AppleWebKit.*Mobile.*/) || !!u.match(/AppleWebKit/), 
                    //ios終端
                    ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), 
                    //android終端或者uc瀏覽器
                    android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, 
                    //是否iPad
                    iPad: u.indexOf('iPad') > -1, 
                    //是否為iPhone或者QQHD瀏覽器
                    iPhone: u.indexOf('iPhone') > -1,
                    //是否為mac系統
                    Mac: u.indexOf('Macintosh') > -1, 
                    //是否web應該程式,沒有頭部與底部
                    webApp: u.indexOf('Safari') == -1 
                };
            }(),
            // 辨別移動終端的語言:zh-cn、en-us、ko-kr、ja-jp...
            language : (navigator.browserLanguage || navigator.language).toLowerCase()
        }

    
        // 根據不同的終端,跳轉到不同的地址
        var sysName;
        var lagName;
        var theUrl = 'http://www.baidufe.com';
        if (Terminal.platform.android) {
            sysName = "android";
        }else if(Terminal.platform.iPhone){
             sysName = "iPhone";
        }else if (Terminal.platform.iPad) {
            sysName = "iPad";
        }else if(Terminal.platform.windows){
            sysName = "windows";
        }else if(Terminal.platform.Mac){
            sysName = "Mac";
        }else if(Terminal.platform.gecko){
            sysName = "fireFox";
        }else if(Terminal.platform.mobile){
            sysName = "mobile";
        }else{
            sysName = "unknown";
        }
        
        // 還可以通過language,區分開多國語言版
        switch(Terminal.language){
            case 'zh-cn':
                lagName = "中文";
                break;
            case 'ko-kr':
                lagName = "韓文";
                break;
            case 'ja-jp':
                lagName = "日文";
                break;
            default:
                lagName = "預設英文";
        }
        
        document.write("<h3>系統:"+sysName+"<br/>語言:"+lagName+"</h3>");
    
        //location.href = theUrl;
    </script>
</head>
<body>
</body>
</html>

 參考地址:http://www.baidufe.com/item/92457b4d0bfde1effa40.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • .Net 大型分散式基礎服務架構橫向演變概述,包含分散式任務調度,分散式配置中心,分散式消息隊列,分散式緩存平臺,分散式服務中心,分散式資料庫中間件平臺等基礎服務的演變說明。
  • 我們用抽象構建框架,用實現擴展細節的註意事項而已:單一職責原則告訴我們實現類要職責單一;里氏替換原則告訴我們不要破壞繼承體系;依賴倒置原則告訴我們要面向介面編程;介面隔離原則告訴我們在設計介面的時候要精簡單一;迪米特法則告訴我們要降低耦合。而開閉原則是總綱,他告訴我們要對擴展開放,對修改關閉。
  • 重要程度:★★★☆☆ 一、什麼是模板方法模式 使用了JAVA的繼承機制,在抽象類中定義一個模板方法,該方法引用了若幹個抽象方法(由子類實現)或具體方法(子類可以覆蓋重寫); 二、補充說明 其實就是JAVA的繼承以及抽象方法、重寫覆蓋的使用; 一般把模板方法定義成final避免被子類修改 三、角色 抽
  • 定義:一個對象應該對其他對象保持最少的瞭解。 問題由來:類與類之間的關係越密切,耦合度越大,當一個類發生改變時,對另一個類的影響也越大。 解決方案:儘量降低類與類之間的耦合。
  • 重要程度:★★★☆☆ 一、什麼是責任鏈模式 為請求創建了一個接收者對象的鏈,每個接收者都包含對另一個接收者的引用,當某個接受者不能處理該請求時,會將該請求轉給下一個接受者處理; 二、補充說明 請求發送者與請求接受者解耦 應用例子:struts的攔截器,servlet的過濾器 三、角色 抽象請求處理者
  • •低層模塊儘量都要有抽象類或介面,或者兩者都有。 •變數的聲明類型儘量是抽象類或介面。 •使用繼承時遵循里氏替換原則。
  • 在CSS網頁開發佈局中,需要對浮動和定位有深刻的理解才能在開發中游刃有餘。基於此,在博客園中做了本篇總結,這些總結來自實踐經驗和閱讀一些書籍後的理解總結。主要內容為浮動,清除浮動,定位。
  • 編者註:作者以一個運動的小車為例子,講述了三種實現HTML5動畫的方式,思路清晰,動畫不僅僅是canvas,還有css3和javascript.通過合理的選擇,來實現最優的實現。 PS:由於顯卡、錄製的幀間隔,以及可能你電腦處理器的原因,播放過程可能有些不太流暢或者失真! 分三種方式實現: (1)
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...