我希望创建一个bookmarklet,它将选定的单词和同一段落元素中的其他单词进行编码,然后将它们发送到我的服务器。
例如,请考虑以下事项:
<p>The quick brown fox jumped over the fence.</p>
如果用户选择&#34;跳过&#34; (通过突出显示它)并点击书签,我想发送&#34;跳过&#34;作为一个编码的字符串和&#34;快速的棕色狐狸跳过栅栏&#34;作为附加编码字符串。
这是我迄今为止所得到的。 getSelection函数发送&#34; jumped&#34;我的服务:
javascript:location.href='http://www.myservice.com/new.php?'+'url_def='+encodeURIComponent(getSelection())
为了将段落元素中的其他文本添加到我的服务中,我可以添加哪些内容?
答案 0 :(得分:3)
你所拥有的东西在IE中不起作用,它有一种不同的机制来获取选择。如果你想要的是包含整个选择的元素的文本,你可以做这样的事情,这将适用于所有主流浏览器。
示例:http://jsfiddle.net/timdown/X7n5R/
代码:
function getSelectedText() {
var selectedText = "", containerText = "";
if (typeof window.getSelection != "undefined") {
var sel = window.getSelection();
if (sel.rangeCount) {
var range = sel.getRangeAt(0);
selectedText = range.toString();
var container = range.commonAncestorContainer;
if (container.nodeType == 3) {
container = container.parentNode;
}
containerText = container.textContent;
}
} else if (typeof document.selection != "undefined" && document.selection.type != "Control") {
var textRange = document.selection.createRange();
selectedText = textRange.text;
containerText = textRange.parentElement().innerText;
}
return {
selectedText: selectedText,
containerText: containerText
};
}
答案 1 :(得分:1)
您可以使用document.getSelection()
并检查anchorNode以查看已选择<p>
。
所以这会引用“周围文本”:document.getSelection().anchorNode.parentNode.innerHTML