Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Решил для себя так — пишу комменты в каком-нибудь notepad'е(sublime), потом ctrl+A, ctrl+C, ctrl+V[ctrl-shift][enter]
А самое обидное, что бывает набиваешь
<html>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script>
<script>
$( function(){
$('#qwe').click( function(){
alert(1)
$('#qwe').unbind('click');
})
} )
</script>
<input type="button" value="click" id="qwe">
</body>
</html>
$('#comment_text').unbind('keydown')// ==UserScript==
// @version 1.0-test, 2012-02-05
// @include http://habrahabr.ru/*
// @include http://*.habrahabr.ru/*
// ==/UserScript==
(function(){
var win = (typeof unsafeWindow !='undefined')? unsafeWindow: window;
if(win.$){ //неработающий (!) тест отправки по Ctrl+Enter (не Chrome)
var comT = win.$('#comment_text');
if(comT.length==0)
comT = win.$('#answer_text'); //это для QA
if(comT){ //если найдена Textarea с вредным действием...
comT.unbind('keydown'); //пытаемся отменить все обработчики событий
win.console.log('подтверждение выполненности unbind');
} //(...и ничего не получаем)
}
})();
(Проверял у себя на Fx9.01,Win32+Scriptish, если что, в Опере то же должно быть.) Или найдите ошибку в этом реальном скрипте (HabrAjax свой отключил на время проверки, но подобное делал изначально в HabrAjax — то же самое), или сообщите, что в Вашей конфигурации это работает.// ==UserScript==
// @name noCtrlEnter
// @version 1.0, 2012-02-04
// @author spmbt
// @namespace spmbt.kodingen.com
// @description noCtrlEnter
// @include http://habrahabr.ru/*
// @include http://*.habrahabr.ru/*
// ==/UserScript==
(function(){
var win = typeof unsafeWindow !='undefined'? unsafeWindow: window;
if(win.$){ //удалить отправку по Ctrl+Enter (не Chrome)
var comT = win.$('#comment_text');
if(comT.length==0)
comT = win.$('#answer_text');
if(comT){ //если найдена Textarea с вредным действием...
comT.constructor.prototype.keydown = function(ha, fKeyD){
fKeyD == null && (fKeyD = ha, ha = null); //повторяем прототип функции
var k ='keydown';
if(this[0].tagName=='TEXTAREA' && /^(comment|answer)_text$/.test(this[0].id)){
fKeyD = function(ev){
if((ev.ctrlKey || ev.metaKey)&& ev.keyCode == 13) //для демонстрации
win.console.log('Ctrl-enter не пройдёт', comT.constructor.prototype.click.toString());
};
}
return arguments.length > 0 ? this.bind(k, ha, fKeyD) : this.trigger(k);
}
}
}
})();// ==UserScript==
// @name noCtrlEnter
// @version 1.1, 2012-02-05
// @description блокирует отправку комментария по Ctrl+Enter из textarea
// @include http://habrahabr.ru/*
document.addEventListener( 'DOMContentLoaded', function(){
var win = (typeof unsafeWindow !='undefined')? unsafeWindow: window;
if(!win.$) return;
var comT = win.$('#comment_text, #answer_text');
comT.length && comT.unbind('keydown');
},!1);
В Fiferox проверено, в Опере Вы проверили.
Как защититься от неожиданной отправки комментария по Ctrl+Enter?