【问题标题】:jQuery getScript method's internal processjQuery getScript 方法的内部流程
【发布时间】:2026-02-21 16:55:02
【问题描述】:

我正在尝试了解 getScript 的内部流程。我知道它内部使用了 $.get 方法。我在想 jQuery 将脚本标记引用放入 DOM 以便能够执行该 js 文件,但我在 DOM 中找不到通过 getScript 加载的脚本的脚本引用。

那么 jQuery 是如何在 DOM 中没有脚本标签引用的情况下执行加载脚本的呢?

$.getScript('gallery.js')$('<script src="gallery.js">').appendTo('body') 完全一样吗?

【问题讨论】:

    标签: jquery getscript


    【解决方案1】:

    This is the interesting part in the source code.

    jQuery 似乎只是接收文本并在全局范围内对其进行评估:

    converters: {
        "text script": function( text ) {
            jQuery.globalEval( text );
            return text;
        }
    }
    

    如果您从不同的域加载脚本,jQuery 会添加一个新的script 标签:

    head.insertBefore( script, head.firstChild );
    

    但在加载代码后将其删除:

    // Remove the script
    if ( head && script.parentNode ) {
        head.removeChild( script );
    }
    

    【讨论】:

    • 即使 jQuery 也删除了添加的脚本。试试这个 $('
    【解决方案2】:

    卢克,usethesource

    (注意这些链接指向旧的提交)

    【讨论】:

    • @ZMorek 是的。这个答案已有 18 个月的历史,并且 jQuery 一直在积极发展。我已经更新以链接到当时的修订版。
    • @MattBall - 你能/会再更新一次吗? :)
    • 找到源,但我不知道您是否使用源来回答“如何”。这确实是源代码中最重要的部分:using。任何人都可以找到它们(尽管我不得不承认我真的很高兴你找到了)。 (抱歉to Jerry
    最近更新 更多