【问题标题】:Translate user selected text with Google Translate API (and jQuery)使用 Google Translate API(和 jQuery)翻译用户选择的文本
【发布时间】:2009-11-12 01:57:11
【问题描述】:

我正在为一个包含多种语言内容的网站开发一些 JavaScript。我想使用 Google Translate API 允许用户选择一个单词(或短语)并自动提供翻译。目前,我只是让它提醒测试结果。

这是我目前所拥有的: google.load("语言", "1");

function getSelection() {
    var selection = (!!document.getSelection) ? document.getSelection() :
           (!!window.getSelection)   ? window.getSelection() :
           document.selection.createRange().text;
    if (selection.text)
        selection = selection.text
    console.log(selection);
    return selection
}

$(document).ready(function() {    
    $(window).mouseup(function() {
        var selection = getSelection();
        if (selection != "") {
            google.language.translate(selection, "", "en", function(result) {
                if (!result.error) {
                    alert(result.translation);
                } else {
                    alert(result.error);
                }
            });
        }
    });
});

我遇到的问题是我的 getSelection() 函数返回一个 Range 对象,这显然与 google 的 language.translate() 函数不兼容。我真正需要的是一种从 Range 中检索实际文本作为字符串的方法,以便我可以传递它。据我所知,有一些非常简单、明显的方法可以做到这一点,但我只是错过了(是的,我尝试使用 selection.text),但我对 JavaScript 的经验是有限的,谷歌搜索它并没有发现任何有用的东西。

谁能帮忙?

【问题讨论】:

    标签: javascript jquery google-translate


    【解决方案1】:

    试试 jQuery 谷歌翻译 - http://code.google.com/p/jquery-translate/.

    【讨论】:

    • 哦,太好了,我一定要检查一下!谢谢!
    【解决方案2】:

    不出所料,我完全错过了一个非常明显的答案。 selection.toString()...

    【讨论】:

    • 这是临界点,但你仍然应该给自己一个臭名昭著的提问者 - 谁有答案 - 但是 - 唉 - 大脑 - 是 - 棘手的东西 ;-) +1 为你评论!跨度>
    【解决方案3】:

    你可以这样做:

    function getSelection() {
        var selection = window.getSelection ? window.getSelection() + ''
                                            : document.selection.createRange().text;
        return selection
    }
    

    通过在getSelection()方法的结果中连接一个空字符串,它的值被转换为字符串,这是一种常见的简写,相当于调用toString方法,因为:

    var test = {
      toString: function () { 
        return 'foo';
      }
    };
    
    test+'' == 'foo'; // true
    

    您也不需要在三元中使用双重逻辑否定 (!!),因为第一个操作数,即条件,它会自动转换为布尔值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-25
      • 2020-02-11
      • 2014-04-21
      • 2017-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多