比方說,我們有一個功能/模塊,增強網站。因此,它是不是真的有必要,它使用,這是not supported in older browsers像IE8/9。我可以填充,但由於它只是一個增強功能,所以舊版瀏覽器應該忽略它。此模塊的代碼看起來或多或少是這樣的:如何忽略瀏覽器requestAnimationFrame不支持它
;(function(window, document, undefined) {
'use strict';
// Example Module
// @constructor
function Module(el, options) {
// ...
}
Module.prototype = {
init: function() {
// If requestAnimationFrame is not supported, no alert should pop up
alert("init");
},
method: function() {
// If requestAnimationFrame is not supported, no alert should pop up
alert("start");
}
};
window.Module = Module;
})(window, document);
我可以再創建一個新的實例
var instance = new Module(document.getElementById('test'));
和「互動」與它
instance.init();
instance.method();
與此問題代碼是在IE9中彈出一個錯誤,因爲IE9不知道「更新」的功能,如。我可以添加一個if
聲明到
if (window.requestAnimationFrame) {
var instance = new Module(document.getElementById('test'));
}
和無處不在我使用它。儘管在模塊的某處檢查支持會容易得多。如果不支持,則什麼都不應該發生,舊的瀏覽器應該忽略它。於是,我就做這樣的事情
// @constructor
function Module(el, options) {
if (!window.requestAnimationFrame) {
return false;
}
//...
}
但是,這並不妨礙舊的瀏覽器無法執行像「的.init()」或「方法()」(在這種情況下)的所有方法。我是否真的必須在每種方法中使用這個if
聲明還是還有其他事情可以做?
沒有回答這些問題爲你工作? – 2014-10-12 17:11:01
@torazaburo種,接受對我最有用。在接受的答案中沒有看到「附加答案」部分。抱歉。 – Daniel 2014-10-12 20:58:55