我在我的一个网站上使用谷歌翻译小部件,并使用以下谷歌提供的代码:
<div id="google_translate_element"></div><script type="text/javascript">
function googleTranslateElementInit() {
new google.translate.TranslateElement({pageLanguage: 'en', layout: google.translate.TranslateElement.InlineLayout.SIMPLE}, 'google_translate_element');
}
</script><script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
<script>
我的问题:翻译在页面加载后运行,但我还有一个脚本可以根据主要导航元素的宽度自动调整其大小。
它在翻译完成之前运行,因此它会根据未翻译的英文标签调整大小。一旦翻译更改了导航措辞,导航元素就需要调整大小以适应新翻译的单词,因为它们的大小(宽度)可能与英语不同。
我尝试在运行代码来调整主导航大小之前调用 Google 翻译代码,但翻译是异步运行的,因此我的代码在翻译完成之前运行。
翻译完成时是否会引发回调事件(或某种检测翻译何时完成的方法),以便我可以在尝试调整导航大小之前等待?
另外,我需要在页面完成翻译后运行脚本。
这是我最终使用的修复:
jQuery(function(){
firstMenu = $("#nav li:first").text();
setTimeout(waitNav, 500);
});
function waitNav() {
if (firstMenu != $('#nav li:first').text()) {
initNav();
firstMenu = $('#nav li:first').text();
setTimeout(waitNav, 500);
}
else {
setTimeout(waitNav, 500);
}
}
基本上,继续检查已知的文本片段是否已更改(在本例中,它是导航块中的第一项)。
如果它发生更改,则意味着翻译器已运行,请运行翻译后需要运行的代码(此处为 initNav() )。
如果用户选择另一种语言,我会不断检查更改。
它并不完美,但对我有用:-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)