有沒有辦法檢索頁面上所有全局變量的名稱/值?在頁面中獲取所有(javascript)全局變量
我想編寫一個JavaScript函數來執行以下操作:
- 找到與「xxx_」前綴的全局變量和陣列中的堅持它們(例如)
- 使用建立一個查詢字符串名稱值對如下: xxx_glob_var1 =值& xxx_glob_var2 =數值等
我該怎麼辦呢?
有沒有辦法檢索頁面上所有全局變量的名稱/值?在頁面中獲取所有(javascript)全局變量
我想編寫一個JavaScript函數來執行以下操作:
我該怎麼辦呢?
事情是這樣的:
function getGlobalProperties(prefix) {
var keyValues = [], global = window; // window for browser environments
for (var prop in global) {
if (prop.indexOf(prefix) == 0) // check the prefix
keyValues.push(prop + "=" + global[prop]);
}
return keyValues.join('&'); // build the string
}
測試用法:
var xxx_foo = "foo";
xxx_bar = "bar";
window.xxx_baz = "baz";
var test = getGlobalProperties('xxx_');
// test contains "xxx_baz=baz&xxx_bar=bar&xxx_foo=foo"
太棒了!非常感謝 – 2010-02-09 08:42:23
爲什麼InputEvent未列出('getGlobalProperties(「Input」)')?這是一個全球變量,對吧? – 2015-09-14 13:20:59
你可以做這樣的事情:
for (var i in window) {
// i is the variable name
// window[i] is the value of the variable
}
雖然這一點,你會得到一堆附加於窗額外的DOM屬性。
'Object .keys(window);'顯示更少的額外的DOM屬性。 – 2014-02-26 08:40:47
@DanDascalescu仍然超過200,所以當想要獲得僅由您的腳本創建的對象時無用 – Pawel 2016-09-20 09:37:39
在您可能希望找到非enumerable性能某些情況下;因此for..in
將不起作用(spec,about chrome)而且都不會Object.keys
,因爲兩者都只使用枚舉鍵。請注意,for..in
與in
不同,但我們不能用它來迭代。
這裏是使用Object.getOwnPropertyNames
(兼容性是IE9 +)的解決方案。當你只想要枚舉屬性,或者如果你想在上下文中搜索另一個(不是全局的)時,我也添加了支持。
function findPrefixed(prefix, context, enumerableOnly) {
var i = prefix.length;
context = context || window;
if (enumerableOnly) return Object.keys(context).filter(function (e) {return e.slice(0,i) === prefix;});
else return Object.getOwnPropertyNames(context).filter(function (e) {return e.slice(0,i) === prefix;});
}
findPrefixed('webkit');
// ["webkitAudioContext", "webkitRTCPeerConnection", "webkitMediaStream", etc..
然後,如果你想加入例如
findPrefixed('webkit').map(function (e) {return e+'='+window[e];}).join('&');
// "webkitAudioContext=function AudioContext() { [native code] }&webkitRTCPeerConnection=function RTCPeerConnection() etc..
在我的情況下,兩個頂部的答案沒有工作,所以我加入了另一個答案,要突出達恩·達斯卡萊斯卡的評論:
Object.keys(window);
當我執行它,它給了:
top,location,document,window,external,chrome,$,jQuery,matchMedia,jQuery1113010234049730934203,match_exists,player_exists,add_me,isLetter,create_match,delete_me,waiting,unsure,refresh,delete_match,jsfunction,check,set_global,autoheight ,updateTextbox,update_match,update_player,alertify,SwaI位,sweetAlert,save_match,$身體,value_or_null,球員,p osition,能力,obj_need_save,xxx_saves,previousActiveElement
,球員,現在的位置,能力,obj_need_save,xx_saves是我的實際全局變量。
我剛纔看到存在類似answer的另一個問題。
可能的重複(除了繁瑣的字符串構建部分)[Javascript - 轉儲所有全局變量](https://stackoverflow.com/questions/8369338/javascript-dumping-all-global-variables) – Bergi 2014-07-18 09:24:31