我有这个问题。我有一个脚本来检查变量是否存在,因为有些脚本异步加载,比如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