document.createelement('script')vs jquery .getScript之间的区别
-
11-10-2019 - |
题
我一直在遇到问题 .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
要获取我上传到pastebin的JS文件( 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();
我究竟做错了什么?任何帮助都很棒,谢谢!
PS哪种方法更快或更有效?
注意:我的代码没有在Pastebin上托管,我只是将服务器上的.js文件的内容上传到该站点,因此很容易共享。我不是要托管的粘贴;)
解决方案
jQuery的 $jQ.getScript()
是一个异步电话。所以如果你打电话 tweetStream()
紧随其后 getScript()
, ,它将在脚本到达之前运行。
你可以打电话 tweetStream()
来自(或AS)回调。
$jQ.getScript('/path-to/tweet.js', function() {
tweetStream();
});
或如果您不关心的价值 this
在 tweetStream()
.
$jQ.getScript('/path-to/tweet.js', tweetStream);
不隶属于 StackOverflow