-2

例子:

<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

4 回答 4

5

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

您需要打开这些功能:

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

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

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

请注意,选择这些名称是为了包含将来会添加的其他资源类型(阅读:图像、css 等)。这里的想法是提供合理的默认值,但有许多影响 jsdom 行为的可调节旋钮。

于 2011-12-10T08:12:27.493 回答
3

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

于 2011-12-01T16:49:13.447 回答
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();
于 2011-12-01T20:43:04.170 回答
1

嗯...可能我会去

test();

但这不是 jquery,它是普通的旧 javascript。

于 2011-12-01T16:49:52.020 回答