首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌转换覆盖选择更改事件

谷歌转换覆盖选择更改事件
EN

Stack Overflow用户
提问于 2014-03-21 15:16:36
回答 4查看 6K关注 0票数 2

我有个大问题:

代码语言:javascript
复制
<div id="translate">
    <a href="#" id="google-translate" title="Google translate">Translate</a>
         <div id="google_translate_element" style="display:none">
         <script>
         function googleTranslateElementInit() {
            new google.translate.TranslateElement({ pageLanguage: "sv" }, "google_translate_element");
         };
         </script>
     </div>
</div>

这给了我以下几点:

代码语言:javascript
复制
<div class="skiptranslate goog-te-gadget" style="">
  <div id=":1.targetLanguage">
    <select class="goog-te-combo">
    </select>
  </div>
    Powered by
  <span style="white-space: nowrap;">
  </span>
</div>

然而,我似乎无法劫持在选择新语言时触发的更改事件。

我尝试了以下几点:

代码语言:javascript
复制
var $textfield = find("#google-translate");
var $popup = find("#google_translate_element");
var $select = $popup.find("select");

$textfield.click(function () {
    $popup.fadeIn("fast");
    return false;
});

$select.bind("change", function () {
    $popup.fadeOut("fast");
});

有人找到解决办法了吗?

BR、Henric

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-03-25 07:13:26

最后,我通过对语言进行重新出现的检查来解决这个问题。这不是最漂亮的解决方案,但它起作用了。:)

代码语言:javascript
复制
var firstMenuValue = $("#main-menu li:first").text();

var checkIfTranslated = function () {
    var check = function () {

        if (firstMenuValue != $("#main-menu li:first").text()) {
            firstMenuValue = $("#main-menu li:first").text();
            $("#google_translate_element").fadeOut("fast");
        }

    };
    setInterval(check, 2000);
};

checkIfTranslated();

我希望这能帮到至少一个人。

票数 2
EN

Stack Overflow用户

发布于 2016-12-10 17:45:19

MjrKusanagi建议的下面的代码工作得非常好。

代码语言:javascript
复制
$("body").on("change", "#google_translate_element select", function (e) {
    console.log(e);
    console.log($(this).find(":selected").text());
    console.log($(this).find(":selected").val());
});

查看下拉列表中的所有数据

代码语言:javascript
复制
$(".goog-te-combo").find("option").each(function () {
    console.log($(this).text() + ", " + $(this).val() + "\n");
});

票数 3
EN

Stack Overflow用户

发布于 2014-03-24 09:25:23

我的猜测是,在运行JS代码之前,您需要验证来自Google的HTML是否已被注入。

我似乎找不到TranslateElement上的回调事件,只需在运行代码之前检查一个您知道应该在那里的HTML。Google Translate Widget - Translation complete callback

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22562644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档