是否可以限制选择所有/Ctrl+A的范围

Is it possible to restrict the range of select all/Ctrl+A?

本文关键字:Ctrl+A 范围 选择 是否      更新时间:2023-09-26

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

是否可以将select all/Ctrl+A的范围限制为仅限框内的文本,最好不使用

我的第一个想法是尝试contenteditable。当我在框中单击并出现编辑器插入符号时,输入Ctrl+A只选择框内的文本,但它也允许用户更改代码,我认为编辑器界面方面使框contenteditable会让用户感到困惑。如果我将源代码文本包装在

contenteditable="false"
如果有contenteditable="true",则源代码文本是只读的,但是键入Ctrl+A将再次选择整个页面的文本。

下面是一个测试页面:http://jsfiddle.net/5crgL/

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

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

请参阅jsfiddle此处jsfiddle