2012-11-14 35 views
4

我在我的頁面上有Google翻譯。它看起來像一個下拉列表,但我的頁面上的所有其他下拉列表都有另一種樣式。所以我創建了一個可以改變Google Translator下拉列表樣式的jQuery函數。此功能添加或刪除一些樣式參數。我想知道什麼時候應該調用這個函數?在當前代碼中,我在3秒後調用它。 after document.ready如何確定Google Translate已加載?

$(document).ready(function() { 
     setTimeout(wrapGoogleTranslate, 3000); 
    }); 

目前的情況是,我隱藏了谷歌翻譯所在的Div,並在它的樣式被我的函數糾正後顯示它。這意味着我的網頁加載,然後等待3秒,然後然後谷歌翻譯出現與修正的樣式。

我想知道如何確定Google翻譯下拉列表已加載,然後調用我的函數來更改樣式。我不想讓用戶等待3秒(也許在某些情況下,Google翻譯會加載超過3秒,那麼我的功能將永遠不會執行)。

+0

您可以隨時通過回調異步加載Google翻譯腳本。使用回調來通知你。 – TryHarder

回答

6

我最近想換「選擇語言的文檔「簡單地說」語言「,所以我也必須在Google代碼執行後運行代碼。以下是我做的:

HTML

設置是很重要的谷歌的divdisplay:none - 我們將在使用JavaScript褪色它使用戶不會看到「選擇語言文字切換「到」語言「。

<div id="google_translate_element" style="display:none;"></div> 
<script type="text/javascript">function googleTranslateElementInit() {new google.translate.TranslateElement({pageLanguage: 'en', layout: google.translate.TranslateElement.InlineLayout.SIMPLE, gaTrack: true, gaId: 'UA-35158556-1'}, 'google_translate_element');}</script> 
<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script> 

的JavaScript

function changeLanguageText() { 
    if ($('.goog-te-menu-value span:first-child').text() == "Select Language") {  
    $('.goog-te-menu-value span:first-child').html('Language'); 
    $('#google_translate_element').fadeIn('slow'); 
    } else { 
    setTimeout(changeLanguageText, 50); 
    } 
} 
changeLanguageText(); 
-2

你可以用純JavaScript來做到這一點。它在W3文檔中爲onLoad attribute指出,您可以在HTML元素中添加一個屬性,該元素將參數作爲元素加載時要執行的JavaScript代碼。

問題是,該屬性僅支持其是幾個元素: -

  • <body>
  • <frame>
  • <frameset>
  • <img>
  • <input type="image">
  • <link>
  • <script>
  • <style>

所以,我建議你用或<frame去。現在應該是這個樣子:

<frame onLoad="wrapGoogleTranslate();" /> 

否則,你可以使用jQuery試試這個:

$("div#googleTranslateWrapper").load(function() { 
    setTimeout(wrapGoogleTranslate, 3000); 
}); 

下面是jQuery的load method

+0

爲什麼我低調? –

1

我也有類似的情況,我不得不改變 「選擇語言」,只是顯示 「語言」。這裏是我的CSS解決方案:

div#google_translate_element{ 
    display: inline-block; 
    vertical-align: top!important; 
} 

div#google_translate_element *{ 
    margin: 0px; 
    padding: 0px; 
    border: none!important; 
    display: inline-block; 
    vertical-align: top!important; 
} 

div#google_translate_element .goog-te-gadget-icon{ 
    display: none; 
} 

div#google_translate_element .goog-te-menu-value{ 
    color: #899290; 
} 

div#google_translate_element .goog-te-menu-value:hover{ 
    color: #a6747e; 
} 

div#google_translate_element .goog-te-menu-value *{ 
    display: none; 
} 

div#google_translate_element .goog-te-menu-value span:nth-child(3){ 
    display: inline-block; 
    vertical-align: top!important; 
} 

div#google_translate_element .goog-te-menu-value span:nth-child(3)::after{ 
    content: "Language"!important; 
}