これまではJavaScriptを使用してクライアント側でブラウザの詳細検出を行っています。ブラウザの詳細検出のベストプラクティス - クライアント側(JavaScriptを使用)またはサーバー側(PHPおよびWURFLを使用)で行う必要があります
data['browserDetails'] = {
'browser' : getBrowser(),
'majorVersion' : getBrowserMajorVersion(),
'appCodeName' : navigator.appCodeName,
'appName' : navigator.appName,
'appVersion' : navigator.appVersion,
'language' : navigator.language,
'platform' : navigator.platform,
'cookieEnabled' : navigator.cookieEnabled,
};
// http://stackoverflow.com/a/9851769
function getBrowser()
{
var isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
if (isOpera) {
return 'Opera';
}
var isFirefox = typeof InstallTrigger !== 'undefined';
if (isFirefox) {
return 'Firefox';
}
var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0 || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || safari.pushNotification);
if (isSafari) {
return 'Safari';
}
var isIE = /*@[email protected]*/false || !!document.documentMode;
if (isIE) {
return 'IE';
}
var isEdge = !isIE && !!window.StyleMedia;
if (isEdge) {
return 'Edge';
}
var isChrome = !!window.chrome && !!window.chrome.webstore;
if (isChrome) {
return 'Chrome';
}
return 'Unknown';
}
// http://stackoverflow.com/a/38080051
function getBrowserMajorVersion()
{
var ua= navigator.userAgent, tem,
M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
if (/trident/i.test(M[1])) {
tem= /\brv[ :]+(\d+)/g.exec(ua) || [];
return (tem[1] || '');
}
if (M[1]=== 'Chrome') {
tem= ua.match(/\b(OPR|Edge)\/(\d+)/);
if (tem!= null) return tem[2];
}
M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];
if ((tem= ua.match(/version\/(\d+)/i))!= null) M.splice(1, 1, tem[1]);
return M[1];
}
私はかつてPHP + WURFLを使用して、サーバー側コードでブラウザの詳細検出を実行しようとしていました。私の非常に限られたテストケースでは、サーバー側の検出がクライアント側の検出よりも優れている(正確な)ことは示されていません。
私はブラウザの詳細検出のベストプラクティスは何ですか?クライアント側(JavaScriptを使用して)またはサーバー側(PHPとWURFLを使用)で行うべきかどうかについては、精度に関してはどうでしょうか?
ありがとうございました。
潜在的な興味:https://51degrees.com/device-detection。開示私は51度に所属していません。私たちはプロジェクトの1つでそれを活用しています。 –
PHPはヘッダーに文字列しか持っていないので、JSにアクセスできるかどうかは分かりません。 – nogad
これは意見に基づく質問です。私はVTCを使っていましたが、私はレビューキューで私のものを使ってきました。 17kユーザーはよりよく知っている必要があります! – miken32