jQuery getScript方法的内部流程

发布于 2024-11-19 05:33:48 字数 304 浏览 1 评论 0 原文

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

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

$.getScript('gallery.js')$('

I am trying to understand the internal process of getScript. I am aware that it uses $.get method interally.I was thinking that jQuery puts a script tag reference into the DOM for being able execute that js file but I couldn't find script references of loaded scripts by getScript in the DOM .

So how does jQuery execute loaded scripts without script tag references in the DOM?

$.getScript('gallery.js') is exactly same thing with $('<script src="gallery.js">').appendTo('body') ?

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

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

发布评论

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

评论(2

巷雨优美回忆 2024-11-26 05:33:48

这是源代码中有趣的部分

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

This is the interesting part in the source code.

jQuery seems to just receive the text and evaluates it in global scope:

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

In case you load the script from a different domain, jQuery adds a new script tag:

head.insertBefore( script, head.firstChild );

but removes it once the code was loaded:

// Remove the script
if ( head && script.parentNode ) {
    head.removeChild( script );
}
浅唱ヾ落雨殇 2024-11-26 05:33:48

卢克,使用 来源

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

Luke, use the source.

(note these links are to an old commit)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文