Prototype cung cấp một số cờ bạn có thể kiểm tra để có được một ý tưởng trình duyệt đang chạy. Hãy nhớ rằng thực hành tốt hơn là kiểm tra chức năng bạn muốn sử dụng hơn là kiểm tra một trình duyệt cụ thể.
Dưới đây là phần browser- và tính năng phát hiện prototype.js
hiện trong cây nguồn:
var Prototype = {
Browser: {
IE: !!(window.attachEvent &&
navigator.userAgent.indexOf('Opera') === -1),
Opera: navigator.userAgent.indexOf('Opera') > -1,
WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
Gecko: navigator.userAgent.indexOf('Gecko') > -1 &&
navigator.userAgent.indexOf('KHTML') === -1,
MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
},
BrowserFeatures: {
XPath: !!document.evaluate,
SelectorsAPI: !!document.querySelector,
ElementExtensions: !!window.HTMLElement,
SpecificElementExtensions:
document.createElement('div')['__proto__'] &&
document.createElement('div')['__proto__'] !==
document.createElement('form')['__proto__']
},
}
Vì vậy, bạn có thể kiểm tra nếu trình duyệt hiện nay là IE bằng cách điều tra các giá trị của Prototype.Browser.IE
, hoặc cách khác, hãy tương thích hơn trong tương lai và kiểm tra một tính năng cụ thể như XPath với Prototype.BrowserFeatures.XPath
.
Và như một sang một bên, tôi hiểu những cạm bẫy của mã hóa đối với một trình duyệt cụ thể và phiên bản của nó, trái với mã hóa đối với các tính năng có sẵn. – EvilSyn
Thêm cọ rửa, và tôi thấy Prototype.Browser sẽ cung cấp cho tôi boolean trên IE hoặc Gecko, v.v. Vì vậy sẽ giúp .. Sẽ tốt hơn nếu nó có phiên bản trong đó nhưng tôi đoán tôi có thể viết JS cũ đơn giản cho rằng . – EvilSyn