2015-05-02 3 views
2

Его легко обнаружить браузер Chrome и Android-устройство, но он не может обнаружить браузер Dolphin. Я попытался следующий код:Как обнаружить браузер дельфинов в javascript?

var isMobile = { 
    Android: function() { 
     return navigator.userAgent.match(/Android/i); 
    },    
    iOS: function() { 
     return navigator.userAgent.match(/iPhone|iPad|iPod/i); 
    },    
    Windows: function() { 
     return navigator.userAgent.match(/IEMobile/i); 
    }, 
    any: function() { 
     return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows()); 
    }, 
    Dolphin: function() { 
     return navigator.userAgent.match(/Dolphin Browser/i); 
    }, 
    Chrome: function() { 
     return navigator.userAgent.match(/Chrome/i); 
    } 
}; 

if (isMobile.Dolphin()) alert('Dolphin'); 
if (isMobile.Android()) alert('android'); 
if (isMobile.Chrome()) alert('Chrome'); 

ответ

0

Поскольку одной из самых важных особенностей дельфинов браузера, чтобы заставить Desktop визуализации на мобильных устройствах, браузер Dolphin инсценирует свою UserAgent строку, так что это не представляется возможным обнаружить JavaScript надежным способом.

+0

Unfortuntely Мне нужно, чтобы обнаружить, что браузер в моем проекте. –

0

Браузер дельфинов использует строку Dolfin в качестве своего агента пользователя. Но его небезопасно, поскольку Пользовательский агент модифицируется устройствами.

Вы можете сначала проверить на Dolfin, в противном случае вы можете проверить, включены ли android и mobile в строку UserAgent.

0

Обнаружение браузера Dolphin является сложным. Помимо того, что пользователи могут изменять свой агент пользователя, я обнаружил, что не все браузеры Dolphin имеют связанную с Dolphin строку в пользовательском агенте.

Я сделал это, предупредив агента пользователя на своем собственном бета-сайте (чтобы у клиентов не было никаких проблем или всплывающих окон), а затем попробовал его с помощью различных устройств и браузеров Dolphin. Выполнено на планшете, так что может быть

Ищет строку Dolphin ненадежно.

НО, так как Дельфин основан на версии низкого уровня Chrome, все, что вы могли сделать, это проверить, какая версия Chrome присутствует в браузере. Это небрежное допущение, но оно работает: пользователи Chrome имеют более новую версию (в большинстве случаев, а если нет, их браузер имеет ту же совместимость, что и браузер Dolphin), а пользователи Dolphin имеют более старую версию Chrome.

Вы можете получить версию с помощью этого Regex

var chromeVersion = /Chrome\/([0-9.]+)/.exec(navigator.userAgent)[1]; 

В сочетании с наличием android и iOS в UserAgent, вы можете быть более уверены, что это, вероятно, будет браузер Dolphin. Лучше всего, чтобы проверить, является ли пользователь

  • На мобильном устройстве (от: Detecting a mobile browser)

    window.mobilecheck = function() { 
        var check = false; 
        (function(a)  {if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm(os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s)|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(|\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(|\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg(g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v)|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v)|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|)|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera); 
        return check; 
    }; 
    // Alternative, but might be supported by desktops in the future 
    if (typeof window.orientation !== 'undefined') { // Your code here } 
    
  • Использование Chrome версии 33 или меньше (источник: https://en.wikipedia.org/wiki/Dolphin_Browser)

    if (chromeversion.split(".")[0] < 34) 
    { 
        //... Do what you need to do here 
        // Eg isDolphin = true; 
    } 
    

Обратите внимание, что пользователи Dolphin все еще в состоянии изменить свой пользовательский агент, так что никогда не 100% gaurantee, даже если это соответствует всем пользователям Dolphin