javascript - 动态加载 JavaScript 库并调用

标签 javascript jquery iframe

尝试动态加载 JavaScript 库。 我收到错误 - Alertify 未定义。我有带有库的 HTML 代码(alertify)。我无法将其插入 iframe

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <script src="https://code.jquery.com/jquery-3.4.1.js"></script>
</head>
<body>

<iframe class="ifr"></iframe>

<script>

    $(document).ready(function () {
        var iframe =
            '<p>Text 1</p>' +
            '<script src="//cdn.jsdelivr.net/npm/alertifyjs@1.13.1/build/alertify.min.js"><\/script>' +
            '<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/alertifyjs@1.13.1/build/css/alertify.min.css"/>' +
            '<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/alertifyjs@1.13.1/build/css/themes/default.min.css"/>' +
            '<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/alertifyjs@1.13.1/build/css/themes/semantic.min.css"/>' +
            '<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/alertifyjs@1.13.1/build/css/themes/bootstrap.min.css"/>' +
            '<p>Text 2</p>' +
            '<script>alertify.success("Success message");<\/script>';

        $(".ifr").contents().find("body").html(iframe);
    });


</script>

</body>
</html>


使用 jQuery 的示例。 我收到错误:

$ is not defined. 

我有带有库的 HTML 代码 (jQuery)。我无法将其插入 iframe

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <script src="https://code.jquery.com/jquery-3.4.1.js"></script>
</head>
<body>

<iframe class="ifr"></iframe>

<script>

    $(document).ready(function () {
        var iframe =
            '<p>Text 1</p>' +
            '<script src="https://code.jquery.com/jquery-3.4.1.js"><\/script>' +
            '<p>Text 2</p>' +
            '<script>$("p").remove();<\/script>';

        $(".ifr").contents().find("body").html(iframe);
    });


</script>

</body>
</html>


最佳答案

这应该可行,尝试动态加载 jquery,然后当调用 onload 时它可以触发您的自定义代码。看我的例子

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <script src="https://code.jquery.com/jquery-3.4.1.js"></script>
</head>
<body>
<iframe class="ifr"></iframe>
<script>
    $(document).ready(function () {
        var iframe =
            '<p>Text 1</p>' +
            '<script src="https://code.jquery.com/jquery-3.4.1.js"><\/script>' +
            '<p>Text 2</p>' +
            '<script>' +
                'var el = document.createElement("script"); ' +
                'el.src = "https://code.jquery.com/jquery-3.4.1.js"; ' +
                'el.onload = function(){ ' +
                '    $("p").remove();        ' +     
                '}; ' +
                'document.getElementsByTagName("body")[0].append(el);' +
            '<\/script>'
        $(".ifr").contents().find("body").html(iframe);
    });
</script>
</body>
</html>

这是脚本本身(未编码,更容易理解):

<script>
    var el = document.createElement("script");
    el.src = "https://code.jquery.com/jquery-3.4.1.js";
    el.onload = function(){
        // Put your code here that needs jquery.
        $("p").remove();
    };
    document.getElementsByTagName("body")[0].append(el);
</script>

关于javascript - 动态加载 JavaScript 库并调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59921708/

相关文章:

javascript - 阻止用户访问 Apache Tomcat 上托管的资源文件夹中的文件

javascript - Animate Foundation 5 下拉菜单

javascript - 阻止嵌入式 iframe 重定向

javascript - 跨(子)域 AJAX POST 请求(带文件/大体)

javascript - jQuery Bootgrid 替换 tr no-results before charge content ajax

javascript - 如何将当前值从 dom-repeat 传播到内部 dom-if

javascript - jqPlot 中 y3axis 没有显示网格线

jquery - 为什么这个 jQuery AJAX PUT 在 Chrome 中有效,但在 FF 中无效

javascript - 操纵 Tumblr 的默认 iframe 控件

javascript - 指令中范围的数组属性在引用时被清空