我正在尝试将非常方便的 Google Translate 翻译元素嵌入到网页中,这非常简单并且效果很好,但是我需要更改在生成的 HTML 中显示的默认文本:
在使用了许多 Google API 和 js 库之后,我认为这不会有问题,因为它几乎可以肯定是可配置的,但是环顾了一段时间,我找不到任何可以让您设置的属性的引用,并且一般来说,文档似乎很可怜。基本代码是:
<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>
在translator
创建. onDOMNodeInserted
_ <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) 似乎加载良好(但根本没有翻译元素)然后冻结,开始吞噬内存,然后崩溃。
关于如何让这个 innerHTML 替换起作用的任何想法?如果您知道displayLabel : "Translate"
当然是首选的 -like 属性,但除非(和一个非常丑陋的setTimeout
黑客),否则我有什么办法可以让它工作吗?