吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 623|回复: 4
收起左侧

[求助] JS引入JQ等待就绪的问题。

[复制链接]
cqwcns 发表于 2022-12-2 10:56
本帖最后由 cqwcns 于 2022-12-2 11:00 编辑

我正在通过浏览器控制台执行一些JS代码。
首先我需要引入JQuery,再进行其他业务逻辑,大概是这样的:
[JavaScript] 纯文本查看 复制代码
console.log('引入JQuery');
let jquery = document.createElement('script');
jquery.src = "https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.js";
document.getElementsByTagName('head')[0].appendChild(jquery);
console.log('引入JQuery完成');

console.log('引入其他支持文件');
$("body").append('<link href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel="stylesheet"></link>');
$("body").append('<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">');

// 其他业务逻辑
// ...

但经过测试,如果同时输入代码,会报错:
微信图片_20221202103114.png

分开输入,即先输入“引入JQuery”部分,再输入“引入其他支持文件”部分,则不会报错。

证明应该是引入JQuery未就绪就调用,导致报错的。


所以,这种情况,如果我要同时输入全部代码,有什么方法可以等等JQuery就绪再继续。


请各位大佬指教,感谢。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

k6m4gdt3 发表于 2022-12-2 15:33
本帖最后由 k6m4gdt3 于 2022-12-2 15:34 编辑

粗略写一个,你可以验证下能不能用。

[JavaScript] 纯文本查看 复制代码
function isLoaded() {
    return typeof jQuery == 'function';
}

function doAfterLoaded() {
    console.log("jQuery 已加载,可以做后续的事。");
}

var intervalSeq = setInterval(() => {
    if (!isLoaded()) return;
    doAfterLoaded();
    clearInterval(intervalSeq);
}, 50);

免费评分

参与人数 1吾爱币 +1 收起 理由
cqwcns + 1 热心回复!

查看全部评分

pansong291 发表于 2022-12-2 21:17
console.log('引入JQuery')
let jquery = document.createElement('script')
jquery.src = 'https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.js'
jquery.onload = function () {
    console.log('引入JQuery完成')

    console.log('引入其他支持文件')
    $('body').append('<link  rel="stylesheet"></link>')
    $('body').append(
        '<link  rel="stylesheet">'
    )

    // 其他业务逻辑
    // ...
}
document.getElementsByTagName('head')[0].appendChild(jquery)

免费评分

参与人数 1热心值 +1 收起 理由
cqwcns + 1 谢谢@Thanks!

查看全部评分

steven026 发表于 2022-12-5 09:34
[JavaScript] 纯文本查看 复制代码
await new Promise(resolve=>{
        console.log('引入JQuery');
        let jquery = document.createElement('script');
        jquery.src = "https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.js";
        document.getElementsByTagName('head')[0].appendChild(jquery);
        jquery.onload=()=>{
            console.log('引入JQuery完成');
            resolve()
        }
    })
console.log('引入其他支持文件');
$("body").append('<link  rel="stylesheet"></link>');$("body").append('<link  rel="stylesheet">');

用await+Promise
控制台支持全局async 所以直接await就行

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
cqwcns + 1 + 1 热心回复!

查看全部评分

acexxx 发表于 2022-12-8 16:53
[JavaScript] 纯文本查看 复制代码
let scriptTag = document.createElement('script')
scriptTag.src = 'https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.js'
scriptTag.onload = function () {
    $('body').append('<link  rel="stylesheet"></link>')
    $('body').append( '<link  rel="stylesheet">')
}
document.getElementsByTagName('head')[0].appendChild(scriptTag)

免费评分

参与人数 1吾爱币 +1 收起 理由
cqwcns + 1 谢谢@Thanks!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 04:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表