Перегляньте список усіх змінних 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.