如何调用 script 标签中定义的 javascript 函数?

发布于 2024-12-19 04:47:13 字数 615 浏览 2 评论 0原文

示例:

<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”中函数的语法。

Example:

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

How would I call test()?

Edit: I didn't explain this correctly.

I am using the request module of node.js to load an external html file that contains javascript functions:

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;

I'm just looking for the syntax to call a function in 'body'.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

梦开始←不甜 2024-12-26 04:47:13

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

您需要打开这些功能:

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

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

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

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

So the problem here is that by default, jsdom.env does not execute javascript found while processing markup.

You'll need to turn these features on:

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

FetchExternalResources controls whether or not jsdom should even bother reaching across the network/disk to collect the bytes of a resource

ProcessExternalResources controls whether or fetched scripts are executed

Note these names were chosen to encompass other resources types (read: images, css, etc..) which will be added in the future. The idea here is to provide sane defaults, but have many turnable knobs that affect the behavior of jsdom.

┈┾☆殇 2024-12-26 04:47:13

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

Just call it like any other function on your page, jQuery is a framework and is not needed for running a JS function.

叫嚣ゝ 2024-12-26 04:47:13

嗯...也许我会选择

test();

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

hmmm... probably I'd go with

test();

But that's not jquery, it's plain old javascript.

千と千尋 2024-12-26 04:47:13

试试这个:

 ...

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

Try this:

 ...

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

...

You could also try:

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

And then:

function (err, window) {
                        var $ = window.jQuery;
                        (1,window.eval)( $("#myscript").html() );
                        window.test();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文