是否可以限制select all / Ctrl + A的范围?

时间:2014-07-03 12:05:02

标签: javascript html selection contenteditable

我正在一个网站上工作,我希望能够显示一个包含语法突出显示的源代码的框,供用户复制。当我点击框,给它焦点(Chrome显示其焦点轮廓),然后键入 Ctrl + A 时,整个页面的文本被选中,而我只想要语法突出显示的源要选择的框中的代码。

是否可以将select all / Ctrl + A 的范围限制为仅包含框中的文本,最好不使用< iframe>?

我的第一个想法是尝试contenteditable。当我在框中单击并出现编辑器插入符号时,键入 Ctrl + A 会根据需要仅选择框中的文本,但它也允许用户更改代码,我认为制作框contenteditable的编辑器界面方面会让用户感到困惑。如果我将源代码文本包装在< div>中在< div>中使用contenteditable="false"如果有contenteditable="true",则源代码文本是只读的,但输入 Ctrl + A 会再次选择整个页面的文本。

以下是测试页:http://jsfiddle.net/5crgL/

1 个答案:

答案 0 :(得分:4)

您可以使用document.createRange();方法从特定元素中选择文本。 要处理ctrl + a,你可以使用jQuery keydown方法,并可以调用JS代码来选择DIV文本。

var range = document.createRange();
range.selectNode(document.getElementById(containerid));
window.getSelection().addRange(range);

请在此处jsfiddle jsfiddle查看。