Вызов функции Javascript из консоли


в консоли JavaScript Chrome, как я могу вызвать функцию, которая принадлежит a .js-файл, включенный в веб-страницу, которую я просматриваю?

5 56

5 ответов:

если он внутри закрытия, я уверен, что вы не можете.

в противном случае вы просто сделать functionName(); и нажмите кнопку возврата.

пример того, где консоль будет возвращать ReferenceError помещает функцию внутри документа jQuery ready function

//this will fail
$(document).ready(function () {
          myFunction(alert('doing something!'));
          //other stuff
}

чтобы добиться успеха, переместите функцию за пределы функции готовности документа

//this will work
myFunction(alert('doing something!'));
$(document).ready(function () {

          //other stuff
}

затем в окне консоли введите имя функции с '()' для выполнения функции

myFunction()

также используется возможность распечатать тело функции, чтобы напомнить себе, что делает функция. Сделайте это, оставив' ()' от имени функции

function myFunction(alert('doing something!'))

конечно, если вам нужно, чтобы функция была зарегистрирована после загрузки документа, то вы не могли этого сделать. Но вы могли бы обойти это.

Это старый нить, но я просто искал и нашел ее. Я новичок в использовании веб-инструменты разработчика: в первую очередь в Firefox инструменты разработчика (в Firefox ст. 51), а также хром инструменты разработчика (хром В. 56)].

Я не смог запустить функции из консоли инструментов разработчика, но затем я нашел это

https://developer.mozilla.org/en-US/docs/Tools/Scratchpad

и я смог добавить код в блокнот, выделить и запустить функцию, выводят для консоли за прикрепленный скриншот.

Я также добавил расширение Chrome "Scratch JS": похоже, он обеспечивает ту же функциональность, что и Scratchpad в инструментах разработчика Firefox (скриншот ниже).

https://chrome.google.com/webstore/detail/scratch-js/alploljligeomonipppgaahpkenfnfkn

Изображение 1 (Firefox): http://imgur.com/a/ofkOp

enter image description here

Изображение 2 (Хром): http://imgur.com/a/dLnRX

enter image description here

вы можете вызвать его с помощью окна.имя_функции() или напрямую имя_функции()

Я только что обнаружил эту проблему. Я смог обойти это, используя косвенность. В каждом модуле определите функцию, назовем ее indirect:

function indirect(js) { return eval(js); }

С помощью этой функции в каждом модуле вы можете выполнить любой код в его контексте.

например, если у вас был этот импорт в вашем модуле:

import { imported_fn } from "./import.js";

затем вы можете получить результаты вызова imported_fn из консоли, выполнив это:

indirect("imported_fn()");

используя eval была моя первая мысль, но это не работает. Моя гипотеза заключается в том, что вызов eval от консоли остается в контексте консоли, и нам нужно выполнить в контексте модуля.