当我们使用 window.getSelection() 代码时,如何在选择一些文本后显示一个小图像?
我发现的最相似的是这个如何在用户文本选择旁边放置一个元素?但似乎无法让它正常工作:-s 对此有点陌生也无济于事。
只需要一些简单的代码就可以了,图像显示在哪里并不重要,只要它靠近选定的文本
-编辑-
正如我在评论中所说,这个想法是显示一个按钮(首先想到图像,但一个按钮更好)漂浮在所选文本附近(在选择之后),并带有引用所选内容的链接,如果我们清除了什么被选中的按钮不再显示。
这是否可以通过在完成文本选择时拉鼠标坐标并将 x,y 坐标添加到要显示的按钮的样式来实现?
-编辑-
让它像我想要的那样工作,记住这个坐标。找到了这个http://motyar.blogspot.pt/2010/02/get-user-selected-text-with-jquery-and.html并且我想出了这个:
function getSelected() {
if (window.getSelection) {
return window.getSelection();
}
else if (document.getSelection) {
return document.getSelection();
}
else {
var selection = document.selection && document.selection.createRange();
if (selection.text) {
return selection.text;
}
return false;
}
return false;
}
$(document).ready(function() {
var blank = '',
selectionImage;
$('#mensagem').mouseup(function(e) {
var selection = getSelected();
if (!selectionImage) {
selectionImage = $('<button>').attr({
type: 'button',
title: 'Citar Texto seleccionado',
id: 'quote-place'
}).html("Citar").css({
"color": "red"
}).hide();
$(document.body).append(selectionImage);
}
$("#quote-place").click(function quote() {
var txt = '';
if (window.getSelection) {
txt = window.getSelection();
}
else if (document.getSelection) {
txt = document.getSelection();
}
else if (document.selection) {
txt = document.selection.createRange().text;
}
else {
return;
}
document.aform.selectedtext.value = txt;
}).mousedown(function() {
if (selectionImage) {
selectionImage.fadeOut();
}
});
selectionImage.css({
top: e.pageY - 30,
//offsets
left: e.pageX - 13 //offsets
}).fadeIn();
});
});
http://jsfiddle.net/ordhor/2Gc8c/
现在的问题在于,当我们点击按钮时<div>
不选择按钮一直显示的文本。它应该只在选择文本时出现,我找不到如何修复它......