题
有一件事我想做在我浏览器为基础的应用程序是允许用户选择一些文字(不在 <textarea>,只是普通的老文!), 和有我的应用程序弹出一个小型工具条,然后可以与下(在我的情况下,添加注解)。
我已经找到了很多东西在谷歌的,这似乎是集中在编写所见即所得的编辑, 但是,这并不是我想要什么, 和大多数它的工作在即但不是在FF2或3。理想情况下,我想要一些功能,可以返回的当前选定的文本浏览器中的窗口,该窗口的作品 IE7(6如果可能的话),火狐2和3和2Safari.如果它的工作原理在歌剧院,那就是一种奖励,但它不是一个要求。
任何人都有个功能,做这个?或者一个想法从哪里开始?
解决方案
看看 jQuery 和 wrapSelection插件.这可能是你在找什么。
其他提示
这jQuery插件是很酷,但它完成一个非常具体的任务:包裹文本的突出标记。这可能就是你想要的。但如果你不想(或者是在一个情况下你不能)将任何外来的标记,你的网页,可以尝试下的解决方案,而不是:
function getSelectedText() {
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;
return txt;
}
这一功能将返回的一个目的代表该文本的选择。它的工作原理跨浏览器(虽然我怀疑的对象返回将会略有不同,取决于浏览器和只有可靠的实际文本的结果,而不是任何额外性)。
注:我最初发现的那个代码碎片在这里: http://www.codetoad.com/javascript_get_selected_text.asp
介绍范围 有一些细节上不同浏览器给你访问到文本的选择。
我的经验是,工作与这些不同的Api直接是很笨拙所以如果 wrapSelection 为你工作我会去。
这些天这个方法 应该够:
function getSelectedText() {
return window.getSelection ? window.getSelection().toString() : '';
}
它将回报 ''
在罕见的情况下的真的很老的浏览器和可能的情况下剧迷你(进行测试,不过,这可能是过时的)+见注UC浏览器序。
该行为的个人浏览器方面的选择 这里概述.
这个代码工作以野生动物园,即和Firefox-希望这些帮助
var str = (window.getSelection) ? window.getSelection() : document.selection.createRange();
str = str.text || str;
str = str + ''; // the best way to make object a string...