以编程方式更改Google翻译下拉列表

Jam*_*ers 9 javascript jquery

在网站上,我尝试使用以下代码添加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)

  • 我收到错误:TypeError:element.dispatchEvent不是一个函数 (6认同)

ggu*_*erg 2

在查看您的页面时,似乎未加载 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)

应该管用。