如何调用脚本标记中定义的javascript函数?

时间:2011-12-01 16:46:53

标签: javascript node.js jsdom

示例:

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

我如何致电test()

编辑:我没有正确解释。

我正在使用node.js的请求模块来加载包含javascript函数的外部html文件:

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 个答案:

答案 0 :(得分:3)

只需像调用页面上的任何其他函数一样调用它,jQuery是一个框架,运行JS函数时不需要它。

答案 1 :(得分:3)

所以这里的问题是默认情况下,jsdom.env在处理标记时不会执行找到的javascript。

您需要启用以下功能:

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

FetchExternalResources控制jsdom是否应该甚至打扰通过网络/磁盘来收集资源的字节

ProcessExternalResources控制是否执行或获取脚本

注意选择这些名称以包含将来添加的其他资源类型(读取:图像,CSS等)。这里的想法是提供理智的默认值,但有许多可转动的旋钮会影响jsdom的行为。

答案 2 :(得分:1)

嗯...可能我会跟

一起去
test();

但这不是jquery,它只是简单的旧javascript。

答案 3 :(得分:1)

试试这个:

 ...

     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();