2012-11-14 34 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; 
}