编程语言
首页 > 编程语言> > 如果页面上不可用,则从托管的JavaScript文件动态加载jQuery

如果页面上不可用,则从托管的JavaScript文件动态加载jQuery

作者:互联网

我正在尝试做的想法是允许客户将我托管的脚本添加到他们的网站上.我希望能够在我的脚本中使用jQuery,但不能肯定地说它将始终可用.这是我明智的代码.到目前为止,这是我托管的javascript页面的完整文件,无法正常使用. $(‘title’).html部分只是为了让我知道它是否有效

我希望托管的脚本可以在客户端网站上包含jQuery.我不希望客户端除了脚本之外还必须包括jQuery

window.onload = function () {
    if (typeof jQuery == 'undefined') {
        var jq = document.createElement('script'); 
            jq.type = 'text/javascript'; 
            jq.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';
        var sc = document.getElementsByTagName('script')[0];
            sc.parentNode.insertBefore(jq, sc);
    } 

    console.log($('title').html());

}

此javascript文件位于我的服务器上,我的客户端将以与Google Analytics(分析)相同的方式包含此文件.

这是我希望我的客户必须包括的唯一内容.与Google Analytics(分析)基本相同

<script type="text/javascript">
    var _waq = _gaq || [];
        _waq.push(['PARAM1', 'PARAM2']);

    (function() {
        var wa = document.createElement('script'); 
            wa.type = 'text/javascript'; 
            wa.async = true;
            wa.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'PATH/TO/SCRIPT/wa.js';
        var s = document.getElementsByTagName('script')[0];
            s.parentNode.insertBefore(wa, s);
    })();
</script> 

当我运行页面时,我收到一条错误消息,提示未定义的参考错误:$未定义,但是如果我随后在页面加载后立即输入$(‘title’).html();我将标题返回到控制台中.

我确定这与脚本中的console.log何时运行并且尚未让jQuery完全加载的时间有关.我的问题是,我如何能够创建一个客户端可以添加的JavaScript页面,以在不可用时动态加载jquery,并在脚本上的其他任何内容运行之前加载它?

解决方法:

我的同事只需要解决相同的问题.从他的代码中剥离出来的变量已更改以反映您的代码.

if(jq.readyState) {
    // For old versions of IE
    jq.onreadystatechange = function() {
        if(this.readyState == 'complete' || this.readyState == 'loaded') {
            // do something...
        }
    }
} else {
    // Other browsers
    jq.onload = function() {
        // do something...
    }
}

标签:dynamic-loading,javascript,jquery
来源: https://codeday.me/bug/20191101/1981653.html