在网站上,我尝试使用以下代码添加Google翻译下拉列表:
function googleTranslateElementInit() {
new google.translate.TranslateElement({
pageLanguage: 'en'
}, 'google_translate_element');
}
<script src="http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
Run Code Online (Sandbox Code Playgroud)
当您从谷歌脚本插入的下拉列表中进行选择时,页面顶部会显示一个Google翻译栏,并且所有文本都会翻译成所选语言.
但是,如果我尝试使用JavaScript触发下拉列表更改,则它不起作用:
$('.goog-te-combo').val('fr')
Run Code Online (Sandbox Code Playgroud)
从下拉列表中选择"法语",但不会触发Google翻译.
为什么为什么它不起作用?我也尝试过:
$('.goog-te-combo').trigger('click')
$('.goog-te-combo').change()
Run Code Online (Sandbox Code Playgroud)
更新:仅供参考,这不是我的网站.我使用Chrome控制台加载jQuery并执行jQuery方法.
sup*_*ann 10
您可以让您的下拉菜单重新加载页面.您可以在URL中重新加载页面#googtrans(en|ja)或#googtrans/en/ja附加到URL,或者/en/ja在重新加载之前将googtrans cookie值设置为(其中ja是所选目标语言的示例).
小智 5
我知道这已经是一个老话题了,但是我只想分享解决这个问题的方法,以解决触发Google翻译选择元素更改事件的问题。
添加将使用dispatchEvent或fireEvent函数的函数:
function triggerHtmlEvent(element, eventName) {
var event;
if(document.createEvent) {
event = document.createEvent('HTMLEvents');
event.initEvent(eventName, true, true);
element.dispatchEvent(event);
} else {
event = document.createEventObject();
event.eventType = eventName;
element.fireEvent('on' + event.eventType, event);
} }
Run Code Online (Sandbox Code Playgroud)
设置值后,获取DOM对象以供选择(使用document.getElement ...)并调用上面的函数:
triggerHtmlEvent(selectObject, 'change');
Run Code Online (Sandbox Code Playgroud)
在查看您的页面时,似乎未加载 jQuery,因此您将无法使用该$()功能。
您需要在您的部分中添加对 jQuery 的引用<head></head>,例如:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
然后
$('.goog-te-combo').val('fr');
Run Code Online (Sandbox Code Playgroud)
应该管用。