Как вызвать функцию JavaScript, определенную в теге скрипта? - PullRequest
0 голосов
/ 01 декабря 2011

Пример:

<script type="text/javascript">
    function test() {
        console.log("Hello world");
    }
</script>

Как бы я позвонил test()?

Редактировать: я не правильно объяснил.

Я использую модуль запроса node.js для загрузки внешнего html-файла, который содержит функции javascript:

request.get(options, function (error, response, body) {
    if (error && response.statusCode !== 200) {
    }
    else {
        jsdom.env({
            html: body,
            scripts: ["../jquery-1.6.4.min.js"]
        }, function (err, window) {
            var $ = window.jQuery;

Я просто ищу синтаксис для вызова функции в 'body'.

Ответы [ 4 ]

3 голосов
/ 10 декабря 2011

Таким образом, проблема в том, что по умолчанию jsdom.env не выполняет обнаруженный JavaScript при обработке разметки.

Вам нужно будет включить эти функции:

jsdom.env({
  // ...
  features : {
    FetchExternalResources : ['script'],
    ProcessExternalResources : ['script']
  }
});

FetchExternalResources контролирует, должен ли jsdom работать с сетью / диском для сбора байтов ресурса

ProcessExternalResources управляет выполнением или извлечением сценариев

Примечание эти имена были выбраны для охвата других типов ресурсов (читай: изображения, CSS и т. Д.), Которые будут добавлены в будущем. Идея состоит в том, чтобы обеспечить нормальные значения по умолчанию, но иметь много поворотных ручек, которые влияют на поведение jsdom.

3 голосов
/ 01 декабря 2011

Просто назовите его как любую другую функцию на своей странице, jQuery - это фреймворк, и он не нужен для запуска функции JS.

1 голос
/ 02 декабря 2011

Попробуйте:

 ...

     function (err, window) {
                    var $ = window.jQuery;
                    window.test();

...

Вы также можете попробовать:

<script type="text/javascript" id="myscript">
    function test() {
        console.log("Hello world");
    }
</script>

А затем:

function (err, window) {
                        var $ = window.jQuery;
                        (1,window.eval)( $("#myscript").html() );
                        window.test();
1 голос
/ 01 декабря 2011

хммм ... наверное я бы пошел с

test();

Но это не jquery, это просто старый javascript.

...