Jak wykryć przeglądarkę Safari, Chrome, IE,Firefox i Opera?
Mam 5 dodatków / rozszerzeń dla FF, Chrome, IE, Opera i Safari.
Potrzebuję kodu, aby rozpoznać przeglądarkę użytkownika i przekierować (po kliknięciu w przycisk Instaluj), aby pobrać odpowiedni dodatek.
16 answers
Googlowanie w celu niezawodnego wykrywania przeglądarki często skutkuje sprawdzeniem ciągu agenta użytkownika. Ta metoda jest Nie wiarygodna, ponieważ fałszowanie tej wartości jest trywialne.
Napisałem metodę wykrywania przeglądarek przez pisanie kaczką.
Używaj metody wykrywania przeglądarki tylko wtedy, gdy jest to naprawdę konieczne, na przykład wyświetlając instrukcje instalacji rozszerzenia dla danej przeglądarki. użyj wykrywania funkcji, jeśli to możliwe.
Demo: https://jsfiddle.net/311aLtkz/
// Opera 8.0+
var isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
// Firefox 1.0+
var isFirefox = typeof InstallTrigger !== 'undefined';
// Safari 3.0+ "[object HTMLElementConstructor]"
var isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || (typeof safari !== 'undefined' && safari.pushNotification));
// Internet Explorer 6-11
var isIE = /*@cc_on!@*/false || !!document.documentMode;
// Edge 20+
var isEdge = !isIE && !!window.StyleMedia;
// Chrome 1+
var isChrome = !!window.chrome && !!window.chrome.webstore;
// Blink engine detection
var isBlink = (isChrome || isOpera) && !!window.CSS;
Analiza niezawodności
Poprzednia metoda zależała od właściwości silnika renderującego (-moz-box-sizing
i -webkit-transform
) do wykrywania przeglądarki. Przedrostki te zostaną ostatecznie usunięte, więc aby wykrywanie było jeszcze bardziej wydajne, przełączyłem się na charakterystykę specyficzną dla przeglądarki: {]}
- Internet Explorer: JScript ' s Conditional compilation (do IE9) i
document.documentMode
. - Edge: w przeglądarkach Trident I Edge implementacja Microsoftu eksponuje konstruktor
StyleMedia
. / Align = "left" / - Firefox: API Firefoksa do instalacji dodatków:
InstallTrigger
- Chrome: globalny obiekt
chrome
, zawierający kilka właściwości, w tym udokumentowanychrome.webstore
obiekt.
[[38]}Safari: unikalny wzorzec nazewnictwa w nazewnictwie konstruktorów. Jest to najmniej trwała metoda ze wszystkich wymienionych właściwości i wiesz co? W Safari 9.1.3 został poprawiony. Sprawdzamy więc - Opera:
window.opera
istnieje od lat, alezostanie usunięta , gdy Opera zastąpi swój silnik Blink + V8 (używany przez Chromium).- Update 1: Opera 15 została wydana , jej ciąg UA wygląda jak Chrome, ale z dodatkiem "OPR". W tej wersji zdefiniowany jest obiekt
chrome
(alechrome.webstore
nie jest). Ponieważ Opera stara się sklonować Chrome, używam do tego celu User agent sniffing. - Update 2:
!!window.opr && opr.addons
może być użyty do wykrycia Opera 20+ (evergreen).
- Update 1: Opera 15 została wydana , jej ciąg UA wygląda jak Chrome, ale z dodatkiem "OPR". W tej wersji zdefiniowany jest obiekt
- Blink:
CSS.supports()
został wprowadzony w Blink Po włączeniu Google Chrome 28. To oczywiście ten sam mrugnięcie użyty w Operze.
SafariRemoteNotification
, który został wprowadzony po wersji 7.1, aby objąć wszystkie Safari od wersji 3.0 i wyższych.
Pomyślnie przetestowany w:
- Firefox 0.8 - 61
- Chrome 1.0 - 68
- Opera 8.0-34
- Safari 3.0 - 10
- IE 6 - 11
- Edge - 20-42
W listopadzie 2016 r. Zaktualizowano przeglądarkę Safari z wersji 9.1.3 i nowszej.]}Zaktualizowano w sierpniu 2018 r., aby zaktualizować najnowsze udane testy chrome, firefox IE i edge.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-16 10:58:14
Możesz wypróbować następujący sposób, aby sprawdzić wersję przeglądarki.
<!DOCTYPE html>
<html>
<body>
<p>What is the name(s) of your browser?</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
<script>
function myFunction() {
if((navigator.userAgent.indexOf("Opera") || navigator.userAgent.indexOf('OPR')) != -1 )
{
alert('Opera');
}
else if(navigator.userAgent.indexOf("Chrome") != -1 )
{
alert('Chrome');
}
else if(navigator.userAgent.indexOf("Safari") != -1)
{
alert('Safari');
}
else if(navigator.userAgent.indexOf("Firefox") != -1 )
{
alert('Firefox');
}
else if((navigator.userAgent.indexOf("MSIE") != -1 ) || (!!document.documentMode == true )) //IF IE > 10
{
alert('IE');
}
else
{
alert('unknown');
}
}
</script>
</body>
</html>
a jeśli musisz znać tylko wersję przeglądarki IE, możesz wykonać poniższy kod. Ten kod działa dobrze dla wersji IE6 do IE11
<!DOCTYPE html>
<html>
<body>
<p>Click on Try button to check IE Browser version.</p>
<button onclick="getInternetExplorerVersion()">Try it</button>
<p id="demo"></p>
<script>
function getInternetExplorerVersion() {
var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
var rv = -1;
if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // If Internet Explorer, return version number
{
if (isNaN(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))))) {
//For IE 11 >
if (navigator.appName == 'Netscape') {
var ua = navigator.userAgent;
var re = new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null) {
rv = parseFloat(RegExp.$1);
alert(rv);
}
}
else {
alert('otherbrowser');
}
}
else {
//For < IE11
alert(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))));
}
return false;
}}
</script>
</body>
</html>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-02 23:58:14
Wiem, że używanie do tego lib może być przesadą, ale aby wzbogacić wątek, możesz sprawdzić is.js sposób na to:
is.firefox();
is.ie(6);
is.not.safari();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-13 20:55:27
W przypadku, gdy ktoś uzna to za przydatne, zrobiłem odpowiedź Roba w w funkcję, która zwraca ciąg przeglądarki, a nie ma wielu zmiennych pływających wokół. Ponieważ przeglądarka nie może się tak naprawdę zmienić bez ponownego ładowania, zrobiłem to buforowanie wyniku, aby zapobiec potrzebie pracy przy następnym wywołaniu funkcji.
/**
* Gets the browser name or returns an empty string if unknown.
* This function also caches the result to provide for any
* future calls this function has.
*
* @returns {string}
*/
var browser = function() {
// Return cached result if avalible, else get result then cache it.
if (browser.prototype._cachedResult)
return browser.prototype._cachedResult;
// Opera 8.0+
var isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
// Firefox 1.0+
var isFirefox = typeof InstallTrigger !== 'undefined';
// Safari 3.0+ "[object HTMLElementConstructor]"
var isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || safari.pushNotification);
// Internet Explorer 6-11
var isIE = /*@cc_on!@*/false || !!document.documentMode;
// Edge 20+
var isEdge = !isIE && !!window.StyleMedia;
// Chrome 1+
var isChrome = !!window.chrome && !!window.chrome.webstore;
// Blink engine detection
var isBlink = (isChrome || isOpera) && !!window.CSS;
return browser.prototype._cachedResult =
isOpera ? 'Opera' :
isFirefox ? 'Firefox' :
isSafari ? 'Safari' :
isChrome ? 'Chrome' :
isIE ? 'IE' :
isEdge ? 'Edge' :
isBlink ? 'Blink' :
"Don't know";
};
console.log(browser());
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-26 21:19:24
Oto poprawiona wersja odpowiedzi Roba z 2016 roku, w tym Microsoft Edge i wykrywanie mrugnięcia:
(edit : zaktualizowałem powyższą odpowiedź Roba o tę informację.)
// Opera 8.0+ (UA detection to detect Blink/v8-powered Opera)
isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
// Firefox 1.0+
isFirefox = typeof InstallTrigger !== 'undefined';
// Safari 3.0+
isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || safari.pushNotification);
// Internet Explorer 6-11
isIE = /*@cc_on!@*/false || !!document.documentMode;
// Edge 20+
isEdge = !isIE && !!window.StyleMedia;
// Chrome 1+
isChrome = !!window.chrome && !!window.chrome.webstore;
// Blink engine detection
isBlink = (isChrome || isOpera) && !!window.CSS;
/* Results: */
console.log("isOpera", isOpera);
console.log("isFirefox", isFirefox);
console.log("isSafari", isSafari);
console.log("isIE", isIE);
console.log("isEdge", isEdge);
console.log("isChrome", isChrome);
console.log("isBlink", isBlink);
Piękno tego podejścia polega na tym, że opiera się ono na właściwościach silnika przeglądarki, więc obejmuje nawet pochodne przeglądarki, takie jak Yandex lub Vivaldi, które są praktycznie kompatybilne z głównymi przeglądarkami, których silniki używają. Wyjątkiem jest Opera, która opiera się na User agent wąchanie, ale dzisiaj (tj. ver. 15 i więcej) nawet Opera sama w sobie jest tylko powłoką dla Blink.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-08 10:02:19
Dziękuję wszystkim. Przetestowałem fragmenty kodu tutaj na najnowszych przeglądarkach: Chrome 55, Firefox 50, IE 11 i Edge 38 i wymyśliłem następującą kombinację, która działała dla mnie dla wszystkich z nich. Jestem pewien, że można to poprawić, ale jest to szybkie rozwiązanie dla każdego, kto potrzebuje: {]}
var browser_name = '';
isIE = /*@cc_on!@*/false || !!document.documentMode;
isEdge = !isIE && !!window.StyleMedia;
if(navigator.userAgent.indexOf("Chrome") != -1 && !isEdge)
{
browser_name = 'chrome';
}
else if(navigator.userAgent.indexOf("Safari") != -1 && !isEdge)
{
browser_name = 'safari';
}
else if(navigator.userAgent.indexOf("Firefox") != -1 )
{
browser_name = 'firefox';
}
else if((navigator.userAgent.indexOf("MSIE") != -1 ) || (!!document.documentMode == true )) //IF IE > 10
{
browser_name = 'ie';
}
else if(isEdge)
{
browser_name = 'edge';
}
else
{
browser_name = 'other-browser';
}
$('html').addClass(browser_name);
Dodaje klasę CSS do HTML, z nazwą przeglądarki.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-23 13:38:40
Oto kilka znanych bibliotek obsługujących wykrywanie przeglądarek.
Bowser by lancedikson-2,713★s-Ostatnia aktualizacja Mar 12, 2018-2.9 KB
console.log(bowser);
document.write("You are using " + bowser.name +
" v" + bowser.version +
" on " + bowser.osname);
<script src="https://cdnjs.cloudflare.com/ajax/libs/bowser/1.9.3/bowser.min.js"></script>
Peron.js by bestiejs - 1912★s-Ostatnia aktualizacja styczeń 23, 2018-5.9 KB
console.log(platform);
document.write("You are using " + platform.name +
" v" + platform.version +
" on " + platform.os);
<script src="https://cdnjs.cloudflare.com/ajax/libs/platform/1.3.5/platform.min.js"></script>
Wykryj.js by darcyclarke - 501★s - Ostatnia aktualizacja Oct 26, 2015-2.9 KB
var result = detect.parse(navigator.userAgent);
console.log(result);
document.write("You are using " + result.browser.family +
" v" + result.browser.version +
" on " + result.os.family);
<script src="https://cdnjs.cloudflare.com/ajax/libs/Detect.js/2.2.2/detect.min.js"></script>
JQuery Przeglądarka by gabceb - 485★s - Ostatnia aktualizacja Nov 23, 2015-1.3 KB
console.log($.browser)
document.write("You are using " + $.browser.name +
" v" + $.browser.versionNumber +
" on " + $.browser.platform);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-browser/0.1.0/jquery.browser.min.js"></script>
Browser Detect (archiwum) by QuirksMode-Ostatnia aktualizacja 14 listopada 2013-884b
console.log(BrowserDetect)
document.write("You are using " + BrowserDetect.browser +
" v" + BrowserDetect.version +
" on " + BrowserDetect.OS);
<script src="https://kylemit.github.io/libraries/libraries/BrowserDetect.js"></script>
Godne Uwagi Wzmianki:
- Whatbrowser - 1,230★s - Ostatnia aktualizacja 05 lutego 2018
- Modernizr - 22,320★s-Ostatnia aktualizacja Mar 4, 2018 - aby pokonać martwego konia, wykrywanie funkcji powinno prowadzić dowolny canIuse style pytania. Wykrywanie przeglądarki jest naprawdę tylko dla miłych gości.
Czytaj Dalej
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-30 23:12:40
Możesz użyć try
i catch
, aby użyć różnych komunikatów o błędach przeglądarki.
IE i edge były pomieszane, ale użyłem typowania kaczki od Roba W (na podstawie tego projektu tutaj: https://www.khanacademy.org/computer-programming/i-have-opera/2395080328).
var getBrowser = function() {
try {
var e;
var f = e.width;
} catch(e) {
var err = e.toString();
if(err.indexOf("not an object") !== -1) {
return "safari";
} else if(err.indexOf("Cannot read") !== -1) {
return "chrome";
} else if(err.indexOf("e is undefined") !== -1) {
return "firefox";
} else if(err.indexOf("Unable to get property 'width' of undefined or null reference") !== -1) {
if(!(false || !!document.documentMode) && !!window.StyleMedia) {
return "edge";
} else {
return "IE";
}
} else if(err.indexOf("cannot convert e into object") !== -1) {
return "opera";
} else {
return undefined;
}
}
};
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-08 18:23:02
Istnieje również mniej "hakerska" metoda, która działa we wszystkich popularnych przeglądarkach.
Google włączyło przeglądarkę do swojej biblioteki zamkniętej . W szczególności zajrzyj do goog.userAgent
oraz goog.userAgent.product
. W ten sposób jesteś również na bieżąco, jeśli coś zmieni się w sposobie prezentowania się przeglądarek (biorąc pod uwagę, że zawsze uruchamiasz najnowszą wersję kompilatora closure.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-23 03:56:49
Krótki wariant
var browser = (function(agent){
switch(true){
case agent.indexOf("edge") > -1: return "edge";
case agent.indexOf("opr") > -1 && !!window.opr: return "opera";
case agent.indexOf("chrome") > -1 && !!window.chrome: return "chrome";
case agent.indexOf("trident") > -1: return "ie";
case agent.indexOf("firefox") > -1: return "firefox";
case agent.indexOf("safari") > -1: return "safari";
default: return "other";
}
})(window.navigator.userAgent.toLowerCase());
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-23 11:21:04
Jeśli chcesz wiedzieć, jaka jest numeryczna wersja danej przeglądarki, możesz użyć poniższego fragmentu. Obecnie powie Ci wersję Chrome / Chromium / Firefox:
var match = $window.navigator.userAgent.match(/(?:Chrom(?:e|ium)|Firefox)\/([0-9]+)\./);
var ver = match ? parseInt(match[1], 10) : 0;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-29 18:34:42
var BrowserDetect = {
init: function () {
this.browser = this.searchString(this.dataBrowser) || "Other";
this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "Unknown";
},
searchString: function (data) {
for (var i = 0; i < data.length; i++) {
var dataString = data[i].string;
this.versionSearchString = data[i].subString;
if (dataString.indexOf(data[i].subString) !== -1) {
return data[i].identity;
}
}
},
searchVersion: function (dataString) {
var index = dataString.indexOf(this.versionSearchString);
if (index === -1) {
return;
}
var rv = dataString.indexOf("rv:");
if (this.versionSearchString === "Trident" && rv !== -1) {
return parseFloat(dataString.substring(rv + 3));
} else {
return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));
}
},
dataBrowser: [
{string: navigator.userAgent, subString: "Edge", identity: "MS Edge"},
{string: navigator.userAgent, subString: "MSIE", identity: "Explorer"},
{string: navigator.userAgent, subString: "Trident", identity: "Explorer"},
{string: navigator.userAgent, subString: "Firefox", identity: "Firefox"},
{string: navigator.userAgent, subString: "Opera", identity: "Opera"},
{string: navigator.userAgent, subString: "OPR", identity: "Opera"},
{string: navigator.userAgent, subString: "Chrome", identity: "Chrome"},
{string: navigator.userAgent, subString: "Safari", identity: "Safari"}
]
};
BrowserDetect.init();
var bv= BrowserDetect.browser;
if( bv == "Chrome"){
$("body").addClass("chrome");
}
else if(bv == "MS Edge"){
$("body").addClass("edge");
}
else if(bv == "Explorer"){
$("body").addClass("ie");
}
else if(bv == "Firefox"){
$("body").addClass("Firefox");
}
$(".relative").click(function(){
$(".oc").toggle('slide', { direction: 'left', mode: 'show' }, 500);
$(".oc1").css({
'width' : '100%',
'margin-left' : '0px',
});
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-04 10:29:42
Ta łączy zarówno oryginalną odpowiedź Roba, jak i aktualizację Pilau na rok 2016
var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
// Opera 8.0+ (UA detection to detect Blink/v8-powered Opera)
var isFirefox = typeof InstallTrigger !== 'undefined'; // Firefox 1.0+
var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;
// At least Safari 3+: "[object HTMLElementConstructor]"
var isChrome = !!window.chrome && !isOpera; // Chrome 1+
var isIE = /*@cc_on!@*/false || !!document.documentMode;
// Edge 20+
var isEdge = !isIE && !!window.StyleMedia;
// Chrome 1+
var output = 'Detecting browsers by ducktyping:<hr>';
output += 'isFirefox: ' + isFirefox + '<br>';
output += 'isChrome: ' + isChrome + '<br>';
output += 'isSafari: ' + isSafari + '<br>';
output += 'isOpera: ' + isOpera + '<br>';
output += 'isIE: ' + isIE + '<br>';
output += 'isIE Edge: ' + isEdge + '<br>';
document.body.innerHTML = output;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-21 09:48:16
Tutaj dowiesz się, która przeglądarka jest uruchomiona.
function isValidBrowser(navigator){
var isChrome = navigator.indexOf('chrome'),
isFireFox= navigator.indexOf('firefox'),
isIE = navigator.indexOf('trident') ,
isValidChromeVer = parseInt(navigator.substring(isChrome+7, isChrome+8)) >= 4,
isValidFireForVer = parseInt(navigator.substring(isFireFox+8, isFireFox+9)) >= 3,
isValidIEVer = parseInt(navigator.substring(isIE+8, isIE+9)) >= 7;
if((isChrome > -1 && isValidChromeVer){ console.log("Chrome Browser")}
if(isFireFox > -1 && isValidFireForVer){ console.log("FireFox Browser")}
if(isIE > -1 && isValidIEVer)){ console.log("IE Browser")}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-06 04:21:55
UAParser jest jedną z lekkich bibliotek JavaScript do identyfikacji przeglądarki, silnika, systemu operacyjnego, procesora i typu/modelu urządzenia z UserAgent string.
Jest dostępny CDN. Tutaj umieściłem przykładowy kod do wykrywania przeglądarki za pomocą UAParser.<!doctype html>
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/ua-parser-js@0/dist/ua-parser.min.js"></script>
<script type="text/javascript">
var parser = new UAParser();
var result = parser.getResult();
console.log(result.browser); // {name: "Chromium", version: "15.0.874.106"}
</script>
</head>
<body>
</body>
</html>
Teraz możesz użyć wartości result.browser
, aby warunkowo zaprogramować swoją stronę.
Source Tutorial: Jak wykryć przeglądarkę, silnik, System Operacyjny, PROCESOR i urządzenie za pomocą JavaScript?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-04 07:47:56
Prosty, pojedynczy wiersz kodu JavaScript daje nazwę przeglądarki:
function GetBrowser()
{
return navigator ? navigator.userAgent.toLowerCase() : "other";
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-26 20:24:14