Вызов функции Javascript из консоли - PullRequest
60 голосов
/ 29 января 2012

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

Ответы [ 5 ]

63 голосов
/ 29 января 2012

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

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

21 голосов
/ 25 июля 2014

Примером, когда консоль будет возвращать ReferenceError, является размещение функции внутри функции готовности документа JQuery

//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!'))

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

6 голосов
/ 19 февраля 2017

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

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

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

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

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

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

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

enter image description here

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

enter image description here

1 голос
/ 29 января 2012

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

0 голосов
/ 24 сентября 2018

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

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

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

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

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

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

indirect("imported_fn()");

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

...