0

出于测试目的,我想列出页面上设置的所有全局变量。最初,我需要运行此代码的唯一浏览器是 PhantomJS(基于 webkit)。但如果可能的话,我可能需要稍后在 IE 和 Firefox 上运行它。

到目前为止我所拥有的是:

windowKnowAttributes = ['history','locationbar'....] // this will get huge.
for( v in window ){
    if( window.hasOwnProperty(v) ) //AND
    if( windowKnowAttributes.indexOf(v) === -1 )
        console.log(v)
}
4

1 回答 1

0

您可以使用Array.filter()将您的已知属性数组与窗口对象上的当前属性集进行比较......也许像这样:

var windowKnownProperties = ['history','locationbar'....]
var windowAllProperties = [];
for( v in window ){
    windowAllProperties.push(v);
}

var unknownGlobals = windowAllProperties.filter(function(el, idx, arr) {
    return (windowKnownProperties.indexOf(el) === -1);
});

您可能希望将内容包装在一个函数中,以便此处使用的变量不会出现在全局空间中。您还可以在任何其他脚本运行之前windowKnownProperties使用循环生成,然后在页面加载后创建一个新的属性数组并将它们与方法进行比较。for...inwindowArray.filter()

于 2013-07-08T16:24:23.423 回答