function getSelectionText() {
var text = "";
if (window.getSelection) {
text = window.getSelection().toString();
} else if (document.selection && document.selection.type != "Control") {
text = document.selection.createRange().text;
}
return text;
}
$(document).ready(function () {
$('div,pre').mouseup(function (e) {
window.onkeydown = function (event) {
if (event.keyCode === 81) {
var gottext = getSelectionText();
var apiurl = "http://api.urbandictionary.com/v0/define?term=";
var tofind = apiurl.concat(gottext);
var xhr = new XMLHttpRequest();
xhr.open("GET", tofind, true);
xhr.onload = function (e) {
if (xhr.readyState === 4) {
if (xhr.status === 200 && gottext != "") {
console.log(xhr.responseText);
var response = JSON.parse(xhr.responseText);
var whattodo = confirm(response.list[0].word + "\n\nDEFINITION: \n\n" + response.list[0].definition + "\n\nEXAMPLE:\n\n" + response.list[0].example + '\n\nPRESS "OK" TO VIEW ADDITIONAL RESULTS');
} else {
console.error(xhr.statusText);
}
}
if (whattodo == true) {
var textret = getSelectionText();
var pageurl = "http://www.urbandictionary.com/define.php?term=";
var togoto = pageurl.concat(textret);
console.log(togoto);
}
};
xhr.onerror = function (e) {
console.error(xhr.statusText);
};
xhr.send(null);
}
};
})
});
好的,所以我有这个代码可以获取用户选择的文本,然后在按下Q键时在Urban Dictionary上搜索它。但是,它似乎只在所选文本作为元素时起作用。我怎样才能使它适用于任何类型的文本,无论元素是什么?
使用<pre>
进行演示:http://jsfiddle.net/BQSJ3/180/
使用<p>
进行演示:http://jsfiddle.net/BQSJ3/182/
谢谢!
答案 0 :(得分:1)
如果您希望它可以处理任何元素,您只需更改选择器即可处理文档的鼠标:
更改
$('div,pre').mouseup
到
$(document).mouseup
答案 1 :(得分:1)
如果您希望它可以处理任何元素,只需使用通配符*
选择器。
$("*").mouseup(function (e) { }
你也可以尝试这个......不能完全保证功能:
$("*:not(:empty)").mouseup(function (e) {}
答案 2 :(得分:0)
如果你想让它与p标签一起使用,你不应该把它包含在这里:
$('div,pre').mouseup(function (e) {
如果我将鼠标悬停在所选文本上然后按“q”
,则此选项适用于我