Перегляньте список усіх змінних JavaScript на консолі Google Chrome


236

У Firebug на вкладці DOM відображається перелік усіх ваших загальнодоступних змінних та об'єктів. У консолі Chrome потрібно ввести назву загальнодоступної змінної або об'єкта, який ви хочете вивчити.

Чи є спосіб - або принаймні команда - для консолі Chrome відобразити список усіх загальнодоступних змінних та об'єктів? Це заощадить багато набравши текст.

Відповіді:


330

Це такий вид продукції, який ви шукаєте?

for(var b in window) { 
  if(window.hasOwnProperty(b)) console.log(b); 
}

Тут буде перераховано все, що є на windowоб'єкті (усі функції та змінні, наприклад, $та jQueryна цій сторінці тощо). Хоча, це досить список; не впевнений, наскільки це корисно ...

Інакше просто зробіть windowі почніть спускатися зі свого дерева:

window

Це дасть вам DOMWindowоб’єкт, що розширюється / досліджується.


4
@ntownsend -Моя консоль не погоджується з вами :) Це властивістьobject , чому б не було цього?
— Нік Крейвер

9
"чому б цього не було?" [[Prototype]]Внутрішнє властивість глобального об'єкта залежить від реалізації , майже у всіх основних реалізацій -V8, SpiderMonkey, Rhino, etc-, глобальний об'єкт успадковує в якій - то момент з Object.prototype, але, наприклад , в інших варіантах реалізації -JScript, Besen, DMDScript, і т.д. ..- його немає, тому window.hasOwnPropertyне існує, протестувати його ми можемо:Object.prototype.isPrototypeOf(window);
— CMS

10
@CMS - Так, це правда ... але питання стосується конкретно Chrome, тому реалізація відома.
— Нік Крейвер

6
Або ви могли просто ввести це;
— Едді Б

2
Я хотів також побачити значення змінної, тому я використав:for(var b in window) { if(window.hasOwnProperty(b)) console.log(b+" = "+window[b]); }
— north-bradley

75

Коли виконання сценарію зупинено (наприклад, на точці розриву), ви можете просто переглянути всі глобальні точки на правій панелі вікна Інструменти для розробників:

хромоглобали


2
чи можу я виплюнути вари з контексту виконання, як шоу перерви, не зупиняючись?
— Легкий фуз

1
@MildFuzz Потім використовуйте рішення Ніка Крейвера (прийняте).
— Марсель Корпель

61

Відкрийте консоль і введіть:

  • keys(window) щоб побачити змінні
  • dir(window) бачити предмети

dir(Function("return this")())змушує його працювати і в Web Workers
— Janus Troelsen

2
FYI dir(window)не працює у Firefox (так, я знаю, ця тема була про Chrome), але key(window)вона працює в Firefox
— Craig London

38

windowОб'єкт містить всі загальні змінні, так що ви можете ввести його в консолі , а потім розгорнути , щоб переглянути всі змінні / атрибути / функції.

chrome-show-all-variables-expand-window-object


4
Приємно! На сьогодні найпростіший спосіб, оскільки ви можете рекурсивно розширювати змінні.
— qwertzguy

31

Якщо ви хочете виключити всі стандартні властивості об’єкта вікна та переглянути специфічні глобальні програми, це надрукує їх на консолі Chrome:

(function(){var standardGlobals=["top","window","location","external","chrome","document","inlineCSS","target","width","height","canvas","data","DOMURL","img","svg","ctx","url","w","a","speechSynthesis","webkitNotifications","localStorage","sessionStorage","applicationCache","webkitStorageInfo","indexedDB","webkitIndexedDB","crypto","CSS","performance","console","devicePixelRatio","styleMedia","parent","opener","frames","self","defaultstatus","defaultStatus","status","name","length","closed","pageYOffset","pageXOffset","scrollY","scrollX","screenTop","screenLeft","screenY","screenX","innerWidth","innerHeight","outerWidth","outerHeight","offscreenBuffering","frameElement","clientInformation","navigator","toolbar","statusbar","scrollbars","personalbar","menubar","locationbar","history","screen","postMessage","close","blur","focus","ondeviceorientation","ondevicemotion","onunload","onstorage","onresize","onpopstate","onpageshow","onpagehide","ononline","onoffline","onmessage","onhashchange","onbeforeunload","onwaiting","onvolumechange","ontimeupdate","onsuspend","onsubmit","onstalled","onshow","onselect","onseeking","onseeked","onscroll","onreset","onratechange","onprogress","onplaying","onplay","onpause","onmousewheel","onmouseup","onmouseover","onmouseout","onmousemove","onmouseleave","onmouseenter","onmousedown","onloadstart","onloadedmetadata","onloadeddata","onload","onkeyup","onkeypress","onkeydown","oninvalid","oninput","onfocus","onerror","onended","onemptied","ondurationchange","ondrop","ondragstart","ondragover","ondragleave","ondragenter","ondragend","ondrag","ondblclick","oncuechange","oncontextmenu","onclose","onclick","onchange","oncanplaythrough","oncanplay","oncancel","onblur","onabort","onwheel","onwebkittransitionend","onwebkitanimationstart","onwebkitanimationiteration","onwebkitanimationend","ontransitionend","onsearch","getSelection","print","stop","open","showModalDialog","alert","confirm","prompt","find","scrollBy","scrollTo","scroll","moveBy","moveTo","resizeBy","resizeTo","matchMedia","requestAnimationFrame","cancelAnimationFrame","webkitRequestAnimationFrame","webkitCancelAnimationFrame","webkitCancelRequestAnimationFrame","captureEvents","releaseEvents","atob","btoa","setTimeout","clearTimeout","setInterval","clearInterval","TEMPORARY","PERSISTENT","getComputedStyle","getMatchedCSSRules","webkitConvertPointFromPageToNode","webkitConvertPointFromNodeToPage","webkitRequestFileSystem","webkitResolveLocalFileSystemURL","openDatabase","addEventListener","removeEventListener","dispatchEvent"];
    var appSpecificGlobals={};
    for (var w in window){
        if (standardGlobals.indexOf(w)==-1) appSpecificGlobals[w]=window[w];
    }
    console.log(appSpecificGlobals);})()

Сценарій добре працює як закладка. Щоб використовувати скрипт як закладку, створіть нову закладку та замініть URL на наступне:

javascript:(function(){var standardGlobals=["top","window","location","external","chrome","document","inlineCSS","target","width","height","canvas","data","DOMURL","img","svg","ctx","url","w","a","speechSynthesis","webkitNotifications","localStorage","sessionStorage","applicationCache","webkitStorageInfo","indexedDB","webkitIndexedDB","crypto","CSS","performance","console","devicePixelRatio","styleMedia","parent","opener","frames","self","defaultstatus","defaultStatus","status","name","length","closed","pageYOffset","pageXOffset","scrollY","scrollX","screenTop","screenLeft","screenY","screenX","innerWidth","innerHeight","outerWidth","outerHeight","offscreenBuffering","frameElement","clientInformation","navigator","toolbar","statusbar","scrollbars","personalbar","menubar","locationbar","history","screen","postMessage","close","blur","focus","ondeviceorientation","ondevicemotion","onunload","onstorage","onresize","onpopstate","onpageshow","onpagehide","ononline","onoffline","onmessage","onhashchange","onbeforeunload","onwaiting","onvolumechange","ontimeupdate","onsuspend","onsubmit","onstalled","onshow","onselect","onseeking","onseeked","onscroll","onreset","onratechange","onprogress","onplaying","onplay","onpause","onmousewheel","onmouseup","onmouseover","onmouseout","onmousemove","onmouseleave","onmouseenter","onmousedown","onloadstart","onloadedmetadata","onloadeddata","onload","onkeyup","onkeypress","onkeydown","oninvalid","oninput","onfocus","onerror","onended","onemptied","ondurationchange","ondrop","ondragstart","ondragover","ondragleave","ondragenter","ondragend","ondrag","ondblclick","oncuechange","oncontextmenu","onclose","onclick","onchange","oncanplaythrough","oncanplay","oncancel","onblur","onabort","onwheel","onwebkittransitionend","onwebkitanimationstart","onwebkitanimationiteration","onwebkitanimationend","ontransitionend","onsearch","getSelection","print","stop","open","showModalDialog","alert","confirm","prompt","find","scrollBy","scrollTo","scroll","moveBy","moveTo","resizeBy","resizeTo","matchMedia","requestAnimationFrame","cancelAnimationFrame","webkitRequestAnimationFrame","webkitCancelAnimationFrame","webkitCancelRequestAnimationFrame","captureEvents","releaseEvents","atob","btoa","setTimeout","clearTimeout","setInterval","clearInterval","TEMPORARY","PERSISTENT","getComputedStyle","getMatchedCSSRules","webkitConvertPointFromPageToNode","webkitConvertPointFromNodeToPage","webkitRequestFileSystem","webkitResolveLocalFileSystemURL","openDatabase","addEventListener","removeEventListener","dispatchEvent"]; var $appSpecificGlobals={};for (var w in window){if (standardGlobals.indexOf(w)==-1) $appSpecificGlobals[w]=window[w];} window.$appSpecificGlobals=$appSpecificGlobals;console.log(window.$appSpecificGlobals);})()

2
Це список поточних глобальних глобальних
— версій

9

У Девіда Уолша є приємне рішення для цього. Ось мій погляд на це, поєднуючи його рішення з тим, що було виявлено і в цій нитці.

https://davidwalsh.name/global-variables-javascript

x = {};
var iframe = document.createElement('iframe');
iframe.onload = function() {
    var standardGlobals = Object.keys(iframe.contentWindow);
    for(var b in window) { 
      const prop = window[b];
      if(window.hasOwnProperty(b) && prop && !prop.toString().includes('native code') && !standardGlobals.includes(b)) {
        x[b] = prop;
      }
    }
    console.log(x)
};
iframe.src = 'about:blank';
document.body.appendChild(iframe);

x тепер є лише глобалісти.


1
prop.toStringЗдається, існує не скрізь, тому умова може бути більш оборонноюif(window.hasOwnProperty(b) && prop && (prop.toString && !prop.toString().includes('native code')) && !standardGlobals.includes(b))
— yves amsellem

6

Введіть наступне твердження в консолі javascript:

debugger

Тепер ви можете перевірити глобальну область застосування за допомогою звичайних інструментів налагодження.

Якщо чесно, ви отримаєте все, що стосується windowсфери, включаючи вбудовані веб-переглядачі, тож це може бути щось на зразок голки в сіні. : /


4

Ви можете спробувати це розширення Firebug Lite для Chrome.


3
Хоча це виглядає приємно, але це рішення звучить трохи, використовуючи гармати, щоб убити комара для мене.
— Марсель Корпель

Може бути. Це єдине, що я знайшов, що показує об'єкти / функції / тощо. те, як робить firebug у FF (під вкладкою DOM у розширенні). Хоча це трохи повільно.
— KooiInc

1
Станом на 17 травня ваше посилання розірвано. Це те саме? getfirebug.com/releases/lite/chrome
— Ян Хантер

@beanland 7: так, зафіксовано це у відповіді, thnx для попередження
— KooiInc

4

Щоб переглянути будь-яку змінну в хромі, перейдіть до "Джерела", а потім "Дивитися" та додайте її. Якщо ви додасте сюди змінну "вікно", ви можете розгорнути її та дослідити.


4

Оновлений метод із тієї ж статті, згаданої Avindra - вводить iframe та порівнює його contentWindowвластивості з глобальними властивостями вікна.

(function() {
  var iframe = document.createElement('iframe');
  iframe.onload = function() {
    var iframeKeys = Object.keys(iframe.contentWindow);
    Object.keys(window).forEach(function(key) {
      if(!(iframeKeys.indexOf(key) > -1)) {
        console.log(key);
      }
    });
  };
  iframe.src = 'about:blank';
  document.body.appendChild(iframe);
})();


2

Тип: this у консолі,

щоб отримати те, що window objectя думаю (?), я думаю, що це в основному те саме, що вводити текстwindow в консолі.

Він працює принаймні у Firefox & chrome.


1

Оскільки всі "загальнодоступні змінні" насправді є властивостями об'єкта вікна (вікна / вкладки, на який ви дивитесь), ви можете просто перевірити об'єкт "вікно". Якщо у вас декілька кадрів, у будь-якому випадку вам доведеться вибрати правильний об’єкт вікна (як, наприклад, у Firebug).



0

Перерахуйте змінну та їх значення

for(var b in window) { if(window.hasOwnProperty(b)) console.log(b+" = "+window[b]); }

введіть тут опис зображення

Відобразить значення конкретного об'єкта змінної

console.log(JSON.stringify(content_of_some_variable_object))

введіть тут опис зображення

Джерела: коментар від @ north-bradley та відповідь від @ nick-craver


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.