2011-04-06 83 views
8

的網站上我嘗試添加了谷歌翻譯下拉使用下面的代碼:更改谷歌翻譯下拉編程

function googleTranslateElementInit() { 
    new google.translate.TranslateElement({ 
    pageLanguage: 'en' 
    }, 'google_translate_element'); 
} 

<script src="http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script> 

當您從谷歌的腳本插入,谷歌的翻譯欄的下拉列表中選擇顯示在頂部並將所有文本翻譯爲所選語言。

但是,如果我嘗試並觸發使用JavaScript的下拉變化,這是行不通的:

$('.goog-te-combo').val('fr') 

「法國」從下拉菜單中選擇,但是谷歌翻譯不會被觸發。

爲什麼o爲什麼不起作用?我也試過:

$('.goog-te-combo').trigger('click') 
$('.goog-te-combo').change() 

更新:FYI這不是我的網站。我使用Chrome控制檯加載jQuery並執行jQuery方法。

+1

它是一個'iframe'嗎? – Blender 2011-04-06 16:40:27

+0

檢查DOM樹後,Google腳本添加的下拉列表不會顯示在iframe中。 – 2011-04-06 18:29:27

+0

如果您在加載腳本之前添加'

',以便Google可以使用[其他UI](http://translate.google.com/translate_tools)填充該腳本,則會得到一個不屬於「 iframe'。不幸的是,即使在這些元素上調用事件觸發器也不會觸發翻譯(但所選項目確實會更改)。 – patridge 2011-06-13 20:22:45

回答

1

在看你的頁面看起來,jQuery沒有加載,所以你將無法使用$()函數。

您需要在您的<head></head>部分添加到jQuery的參考,如:

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 

然後

$('.goog-te-combo').val('fr'); 

應該工作。

+0

如果'$('。goog-te-combo')。val('fr')'沒有做任何事情,但是OP說它改變了下拉菜單,這就會有意義。 – 2011-04-06 17:02:35

+0

我明白,但我看了一下頁面,並嘗試在控制檯中運行'$('。goog-te-combo')。val('fr');'並得到錯誤'TypeError:Can not call method 'val'爲null。搜索源代碼時,沒有提到'jQuery'。因此,無論他發佈這個問題還是它從未工作過(或者它可能記得從之前的選擇'fr',並且OP誤認爲它正在工作),他都刪除了jQuery。 – ggutenberg 2011-04-06 17:06:14

+1

我不認爲頁面屬於OP。我相信他們正試圖與來自外部域的頁面進行交互......因此存在這個問題。 – 2011-04-06 17:13:20

1

花了很多時間試圖讓它工作,我實現了jquery翻譯插件,並能夠實現我想要做的一切,包括在頁面加載時自動翻譯爲瀏覽器語言和可點擊語言鏈接,標誌等插件的

詳情和下載,在這裏http://code.google.com/p/jquery-translate/

+0

嘿,這個插件仍然工作?我花了幾個小時試着沒有快樂。謝謝 – user989952 2014-04-24 12:07:13

9

你可以有你的下拉菜單觸發頁面重載。您可以重新加載頁面,其中#googtrans(en|ja)#googtrans/en/ja附加到URL,或者在重新加載之前將googtrans cookie值設置爲/en/ja(其中ja是所選目標語言的示例)。

3

添加到您的代碼:

//to get currently selected language 
string language=Request.Cookies["googtrans"].Value 
//to set desired language 
Response.Cookies["googtrans"].Value = Your language; 
//eg: Response.Cookies["googtrans"].Value = "/en/hi"; 
+0

我試過這個在控制檯,它沒有工作 – 2014-11-13 22:47:28

4

我知道這已經是一個老話題,但我只是想分享我通過燒製,谷歌翻譯選擇要素變更事件與問題,提出瞭解決方案。

添加將使用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); 
} } 

設定值後,得到的DOM對象的選擇(使用document.getElement ...)及撥打以上功能:

triggerHtmlEvent(selectObject, 'change'); 
+0

這是一個解決方案!萬分感謝!!! – 2013-04-25 14:36:25

+0

嗨,我對這個解決方案非常感興趣,它正是我在過去3天裏一直在尋找的東西。你碰巧有一個工作版本,我想我錯過了一些東西「設置值後,獲取選擇的DOM對象(使用document.getElement ...)」感謝您的幫助 – user989952 2014-04-24 10:45:13

+5

我得到的錯誤: TypeError:element.dispatchEvent不是函數 – user989952 2014-04-24 10:56:21

4

//獲得當前所選的語言

string language=Request.Cookies["googtrans"].Value 

//設置所需語言

Response.Cookies["googtrans"].Value = Your language; 

//例如:Response.Cookies [」 googtrans「]。Value =」/ en/hi「;