编程语言
首页 > 编程语言> > javascript-document.createElement(‘script’)与jQuery .getScript之间的区别

javascript-document.createElement(‘script’)与jQuery .getScript之间的区别

作者:互联网

我遇到了让.getScript在某些奇怪的情况下工作的问题.

例如,这仅在需要时才加载脚本.

function twitterSDK() {
    $jQ.getScript('http://platform.twitter.com/widgets.js');
}

function diggShare() {
    $jQ.getScript('http://widgets.digg.com/buttons.js');
}

function buzzShare() {
    $jQ.getScript('http://www.google.com/buzz/api/button.js');
}

但是,它似乎不适用于我编写的一些脚本.如果我调用.getScript来获取此JS文件,则我已将其上传到Pastebin(http://pastebin.com/GVFcMJ4P)并调用tweetStream();.什么都没发生.但是,如果执行以下操作,它将起作用:

var twitter = document.createElement('script');
twitter.type = 'text/javascript';
twitter.async = true;
twitter.src = '/path-to/tweet.js';
$jQ('.twitter-section').append(twitter);
tweetStream();

我究竟做错了什么?任何帮助都会很棒,谢谢!

附言哪种方法更快或更有效?

注意:我的代码不是托管在pastebin上,我只是将服务器上.js文件的内容上传到该站点,因此易于共享.我没有偷取pastebin来托管;)

解决方法:

jQuery的$jQ.getScript()是异步调用.因此,如果您在getScript()之后立即调用tweetStream(),它将在脚本到达之前运行.

您可以改为(或作为回调)调用tweetStream().

$jQ.getScript('/path-to/tweet.js', function() {
    tweetStream();
});

如果您不在乎tweetStream()中的this的值,则为this.

$jQ.getScript('/path-to/tweet.js', tweetStream);

标签:script-tag,getscript,javascript,jquery
来源: https://codeday.me/bug/20191105/1996187.html