2013-03-13 18 views
8

あなたのウェブサイトにGoogle Translateウィジェットを非同期に読み込む方法はありますか?あなたのウェブサイト用にGoogle Translateウィジェットを非同期にロードする方法はありますか?

これはページの下部に貼り付けましたが、#google_translate_elementコンテナはまだ空です。

<!-- Asynchronous Google Translate --> 
<script type="text/javascript"> 
function googleTranslateElementInit() { 
    new google.translate.TranslateElement({pageLanguage: 'en', includedLanguages: 'ar,bg,bn,de,el,eo,es,en,fr,hi,id,it,iw,ja,ko,pl,pt,ru,th,tr,vi,zh-CN', layout: google.translate.TranslateElement.InlineLayout.SIMPLE, gaTrack: true, gaId: 'UA-1234-1'}, 'google_translate_element'); 
} 

(function() { 
    var googleTranslateScript = document.createElement('script'); 
    googleTranslateScript.type = 'text/javascript'; 
    googleTranslateScript.async = true; 
    googleTranslateScript.src = '//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit'; 
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(googleTranslateScript); 
})(); 
</script> 

答えて

7

コードにいくつか問題があるようです。しかし、あなたの基本的な考えは健全です。

<div id="google_translate_element"></div>は、スクリプトタグの前に定義されていると仮定すると、以下の作業をする必要があります:

<!-- Asynchronous Google Translate --> 
<script type="text/javascript"> 
    function googleTranslateElementInit() { 
    new google.translate.TranslateElement({pageLanguage: 'en', 
     includedLanguages: 'ar,bg,bn,de,el,eo,es,en,fr,hi,id,it,iw,ja,ko,pl,pt,ru,th,tr,vi,zh-CN', 
     layout: google.translate.TranslateElement.InlineLayout.SIMPLE, 
     gaTrack: true, gaId: 'UA-37652767-1'}, 'google_translate_element'); 
    } 

    var googleTranslateScript = document.createElement('script'); 
    googleTranslateScript.type = 'text/javascript'; 
    googleTranslateScript.async = true; 
    googleTranslateScript.src = 'http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit'; 
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(googleTranslateScript); 
</script> 

は、少なくともそれは私がHTMLファイルにすべてを置いたときに私のために働いたとクロムにロードされました。

もちろん、var宣言とそれに続く行を$(document).ready関数(またはjQueryを使用しない場合はその他の方法)に配置することは可能です。その後、divscriptの間のオーダーはもはや影響を及ぼさないでしょう。

+1

ありがとうございました。私の編集を「ピアレビュー」できますか? srcをhttp://ではなく//に改善しました。そうすれば、HTTPSでも動作します。それはきちんとしたトリックです。 – Geoff

+0

まだレビューをしていない担当者がいません。 Ahh - '//'は私にとってはうまくいきませんでしたが、おそらくそれはサーバー上になかったからです。 – fredrik

+0

これは実際にはよく見えます!私はIEのサポートのために非同期の代わりに遅延を使用することをお勧めしたいと思います。 – Parris

関連する問題