我正在为一个包含多种语言内容的网站开发一些JavaScript。我想使用Google Translate API允许用户选择一个单词(或短语)并自动提供翻译。目前,我只是让它提醒结果进行测试。
这是我到目前为止所做的: google.load(“language”,“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的经验有限,谷歌搜索没有发现任何有用的东西。 / p>
有人可以帮忙吗?
答案 0 :(得分:1)
尝试使用jQuery google翻译 - http://code.google.com/p/jquery-translate/。
答案 1 :(得分:1)
不出所料,我完全错过了一个非常明显的答案。 selection.toString()...
答案 2 :(得分:1)
您可以这样做:
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
你也不需要在三元组中使用双逻辑否定(!!
),因为第一个操作数,条件,它自动转换为布尔值。