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
この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's $jQ.getScript()
非同期呼び出しです。だからあなたが電話していたなら tweetStream()
直後 getScript()
, 、スクリプトが到着する前に実行されます。
あなたは電話することができます tweetStream()
代わりに(またはそのように)コールバックから。
$jQ.getScript('/path-to/tweet.js', function() {
tweetStream();
});
または、あなたがの価値を気にしない場合 this
の tweetStream()
.
$jQ.getScript('/path-to/tweet.js', tweetStream);
所属していません StackOverflow