非常に便利なGoogle Translateの翻訳要素を超シンプルで効果的なWebページに埋め込むことを試みていますが、結果として表示されるデフォルトのテキストを変更する必要がありますHTML:google.translate.TranslateElementの結果から要素を変更する
グーグルAPIsand JSライブラリの数で働いた、私はそれがほぼ確実に設定可能なように、これは問題はないと考えましたが、私はいずれかを見つけることができないいくつかの時間のために周りを見回しましたあなたがこれを設定しようとしているプロパティへの参照、そして一般的なドキュメントは哀れなようです。基本的なコードは次のとおりです。
私はそれをハックし、それが持っていた後だけで結果のHTMLを変更するonDOMNodeInserted
リスナーを使用することにしました
translator
を作成するときでプロパティとしてこれを設定することができるというdispairedた
<div id="google_translate_element"></div>
<script>
function googleTranslateElementInit() {
var translator = new google.translate.TranslateElement({
pageLanguage: 'en',
autoDisplay: false,
multilanguagePage: false,
layout: google.translate.TranslateElement.InlineLayout.SIMPLE
}, 'google_translate_element');
}
</script>
<script src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
<div id="google_translate_element"></div>
にロードされます。ここではjQueryを使用していますので、私のコードは
$(document).ready(function(){
$('#google_translate_element').bind('DOMNodeInserted', function(event) {
$('.goog-te-menu-value span:first').html('Translate');
});
})
です。興味深いのはここです。 Chromeはすべてを完全に読み込み、innerHTML置換を美しく行います。 Internet Explorer(8)はDOMNodeInsertedリスナーを完全に無視し、ページはjQuery関数が呼び出されなかったかのように読み込まれます。 Firefox(10)は正常に読み込まれているように見えますが(translate要素が一切ない)、フリーズしてメモリを突っ走り始め、クラッシュします。
このinnerHTML置換をどのように動作させることができるかについての考えはありますか?あなたがdisplayLabel : "Translate"
のようなプロパティが気に入っているのは当然のことですが、それはできません(そして実際には醜いsetTimeout
ハック)。これを動作させる方法はありますか?
これは私が撮って終了アプローチかもしれないが、彼らはやっているすべては、言語とURLの情報と一緒にGoogleの翻訳サイトにユーザーをリダイレクトです。もし私が私のサイトに人々を保つことを好むことができます。いずれにせよ、支援のおかげで –
ベン、次のページ、右下には、いくつかの追加の安全性を備えたDOMNodeInsertedハンターが含まれています。それはあなたが探しているものではありませんが、それ以上の洞察を提供するかもしれません。 http://code.google.com/p/socialtranslate/source/browse/trunk/chrome-extension/translate.js?r=30 –