测试网址:https ://github.com/darkred/test/issues/new
GitHub 允许在问题区域中公开 repo:
- 提交一个只有 1 个字符作为标题且没有正文的新问题,并且
- 发表评论只有 1 个字符。
上述情况经常发生在我身上,因为“提交问题或评论”的内置热键是Ctrl + Enter:在我的问题/评论文本准备好之前,我不小心按下了该键盘快捷键。
所以,我正在尝试制作一个脚本(使用 Greasemonkey),每当我尝试时会显示一个确认弹出窗口:
- 提交新问题,或
- 发表评论
via press Ctrl + Enter:
如果用户Ok在弹出窗口中按下,则脚本允许提交,
但如果用户Cancel在弹出窗口中按下,则脚本停止提交。
我遇到了这两种方法:
在 Brock Adams 的有用评论之后,我有以下代码:
var targArea_1 = document.querySelector('#issue_body'); // New issue textarea
var targArea_2 = document.querySelector('#new_comment_field'); // New comment textarea
function manageKeyEvents (zEvent) {
if (zEvent.ctrlKey && zEvent.keyCode == 13) { // If Ctrl+Enter is pressed
if (confirm('Are you sure?') == false) { // If the user presses Cancel in the popup
zEvent.stopPropagation(); // then it stops propagation of the event
zEvent.preventDefault(); // and cancels/stops the submit submit action bound to Ctrl+Enter
}
}
}
if (targArea_1 !== null) {targArea_1.addEventListener('keydown', manageKeyEvents);}
if (targArea_2 !== null) {targArea_2.addEventListener('keydown', manageKeyEvents);}
现在,只要我按 ,弹出窗口就会出现Ctrl + Enter。问题是在弹出窗口中
按下时没有提交问题/评论Ok(即使我之前根本没有Cancel在弹出窗口中按下)。如何解决这个问题?
而且,在我按下弹出窗口一次后,如何重新允许提交问题/评论Cancel?
换句话说:如何在 preventDefault() 之后重新启用默认值?