我正在一个网站上工作,我希望能够显示一个包含语法突出显示的源代码的框,供用户复制。当我点击框,给它焦点(Chrome显示其焦点轮廓),然后键入 Ctrl + A 时,整个页面的文本被选中,而我只想要语法突出显示的源要选择的框中的代码。
是否可以将select all / Ctrl + A 的范围限制为仅包含框中的文本,最好不使用< iframe>?
我的第一个想法是尝试contenteditable
。当我在框中单击并出现编辑器插入符号时,键入 Ctrl + A 会根据需要仅选择框中的文本,但它也允许用户更改代码,我认为制作框contenteditable
的编辑器界面方面会让用户感到困惑。如果我将源代码文本包装在< div>中在< div>中使用contenteditable="false"
如果有contenteditable="true"
,则源代码文本是只读的,但输入 Ctrl + A 会再次选择整个页面的文本。
以下是测试页:http://jsfiddle.net/5crgL/
答案 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查看。