Jquery 是否有一种方法可以在代码上触发dblclik事件,语法为keydown上的highlighter?
我正在使用。 它有一个功能,在高亮显示的文本上的dblclik上,选择所有选项: 我想通过在keydown上触发dblclick来实现同样的效果,这可行吗 我成功地捕捉到了按键事件:Jquery 是否有一种方法可以在代码上触发dblclik事件,语法为keydown上的highlighter?,jquery,selection,double-click,syntaxhighlighter,Jquery,Selection,Double Click,Syntaxhighlighter,我正在使用。 它有一个功能,在高亮显示的文本上的dblclik上,选择所有选项: 我想通过在keydown上触发dblclick来实现同样的效果,这可行吗 我成功地捕捉到了按键事件: $(window).keydown(function(e) { if(e.ctrlKey && e.keyCode == 65) { console.log("Ctrl+A event captured"); e.preventDefault();
$(window).keydown(function(e) {
if(e.ctrlKey && e.keyCode == 65) {
console.log("Ctrl+A event captured");
e.preventDefault();
/* but I dont know how to proceed */
}
})
我非常感谢您在这个问题上提出的任何想法。如果您希望扩展SyntaxHighlighter,您可以在GitHub上分叉并修改它 如果您没有免费的GitHub帐户,请注册,然后访问,然后单击
Fork
按钮
您也可以下载.ZIP并修改源代码。您想要的文件位于src/core.js
附加到dblclick
的代码位于
在本项目的分支中,只需添加以下内容:
dom.attachEvent(dom.findElement(element, '.code'), 'keydown',
function(e)
{
if(e.ctrlKey && e.keyCode == 65) {
console.log("Ctrl+A event captured");
e.preventDefault();
dom.quickCodeHandler();
return false;
}
});
作为参考,执行此工作的代码位于中
/**
*快速代码鼠标双击处理程序。
*/
函数quickCodeHandler(e)
{
var目标=e.target,
highlighterDiv=findParentElement(目标,'.syntaxhighlighter'),
容器=findParentElement(目标,'.container'),
textarea=document.createElement('textarea'),
荧光灯
;
如果(!container | | |!highlighterDiv | | findElement(container,'textarea'))
返回;
//highlighter=highlighters.get(highlighterDiv.id);
//添加源类名
addClass(highlighterDiv,“源”);
//必须检查每一行并抓住它的文本,不能只在屏幕上做
//容器,因为Firefox会丢失所有\n Webkit没有的内容。
变量行=container.childNodes,
代码=[]
;
对于(变量i=0,l=lines.length;i
如果您希望扩展SyntaxHighlighter,可以在GitHub上分叉并修改它
如果您没有免费的GitHub帐户,请注册,然后访问,然后单击Fork
按钮
您也可以下载.ZIP并修改源代码。您想要的文件位于src/core.js
附加到dblclick
的代码位于
在本项目的分支中,只需添加以下内容:
dom.attachEvent(dom.findElement(element, '.code'), 'keydown',
function(e)
{
if(e.ctrlKey && e.keyCode == 65) {
console.log("Ctrl+A event captured");
e.preventDefault();
dom.quickCodeHandler();
return false;
}
});
作为参考,执行此工作的代码位于中
/**
*快速代码鼠标双击处理程序。
*/
函数quickCodeHandler(e)
{
var目标=e.target,
highlighterDiv=findParentElement(目标,'.syntaxhighlighter'),
容器=findParentElement(目标,'.container'),
textarea=document.createElement('textarea'),
荧光灯
;
如果(!container | | |!highlighterDiv | | findElement(container,'textarea'))
返回;
//highlighter=highlighters.get(highlighterDiv.id);
//添加源类名
addClass(highlighterDiv,“源”);
//必须检查每一行并抓住它的文本,不能只在屏幕上做
//容器,因为Firefox会丢失所有\n Webkit没有的内容。
变量行=container.childNodes,
代码=[]
;
对于(变量i=0,l=lines.length;i
您的意思是想扩展syntaxhighlighter库,同时使用按键
来检测CTRL-A
,还是想创建自己的库来复制syntaxhighlighter的行为?我的错,实际上扩展库是最好的选择您的意思是想扩展syntaxhighlighter库,同时使用keydown
来检测CTRL-A
,还是想创建自己的库来复制syntaxhighlighter的行为?我的错,实际上扩展库是最好的选择
/**
* Quick code mouse double click handler.
*/
function quickCodeHandler(e)
{
var target = e.target,
highlighterDiv = findParentElement(target, '.syntaxhighlighter'),
container = findParentElement(target, '.container'),
textarea = document.createElement('textarea'),
highlighter
;
if (!container || !highlighterDiv || findElement(container, 'textarea'))
return;
//highlighter = highlighters.get(highlighterDiv.id);
// add source class name
addClass(highlighterDiv, 'source');
// Have to go over each line and grab it's text, can't just do it on the
// container because Firefox loses all \n where as Webkit doesn't.
var lines = container.childNodes,
code = []
;
for (var i = 0, l = lines.length; i < l; i++)
code.push(lines[i].innerText || lines[i].textContent);
// using \r instead of \r or \r\n makes this work equally well on IE, FF and Webkit
code = code.join('\r');
// For Webkit browsers, replace nbsp with a breaking space
code = code.replace(/\u00a0/g, " ");
// inject <textarea/> tag
textarea.appendChild(document.createTextNode(code));
container.appendChild(textarea);
// preselect all text
textarea.focus();
textarea.select();
// set up handler for lost focus
attachEvent(textarea, 'blur', function(e)
{
textarea.parentNode.removeChild(textarea);
removeClass(highlighterDiv, 'source');
});
};