我有這個問題。我有一個腳本來檢查變量是否存在,因爲有些腳本異步加載,比如Facebook的FB或者Twitter的twttr。JavaScript:如何檢查變量是否存在變量名?
function whenAvailable(name, callback, interval) {
interval || (interval = 100); // ms
window.setTimeout(function() {
if ((window.hasOwnProperty && window.hasOwnProperty(name)) || window[name] || !!eval(name)) {
return callback();
} else {
window.setTimeout(arguments.callee, interval);
}
}, interval);
}
貌似這個
if ((window.hasOwnProperty && window.hasOwnProperty(name)) || window[name] || !!eval(name))
不起作用。 IE會拋出錯誤 eval(name) - 例如如果name ='FB',則表示它不能評估未定義的'FB'。
window.hasOwnProperty(name)
如果name == 'twttr.widgets'
不起作用。
是否有一個通用的和跨瀏覽器檢查VAR名稱是否存在var?
快速的問題,就這些變量總是在腳本中存在裝? – Joseph 2012-03-29 15:51:18
不能有一個名爲'twttr.widgets'的變量。可以有一個名爲'twttr'的變量,它可能有一個屬性'widgets',但希望你可以看到它不像「這個屬性是否存在」那樣簡單 – Gareth 2012-03-29 15:52:53
Joseph - 不,它們可能永遠不存在。 Gareth - 技術上你是對的,但我想要的東西需要與物業一起工作。 – 2012-03-29 16:36:11