(继续这个答案)
我一直在尝试制作一个脚本(使用 Greasemonkey),每当我尝试以下操作时都会显示一个确认弹出窗口:
- 提交新问题,或
- 发表新评论。
via press Ctrl + Enter:
如果用户Ok
在弹出窗口中按下,则脚本允许提交,
但如果用户Cancel
在弹出窗口中按下,则脚本停止提交。
在这些情况下,上面答案中的脚本可以正常工作。
我注意到,还有另一种提交问题的方法:
按下Enter或Ctrl+Enter同时关注问题标题文本框。
我也想用脚本来涵盖这一点。
下面是我的代码。
如果我只是在新选项卡中打开新问题页面(https://github.com/darkred/test/issues/new)_(即不是通过单页应用程序工作流程,也就是历史 API)_),那么脚本在按下 时也有效Ctrl+Enter。
我仍然遇到的问题是,如果我通过跟随New issue
按钮(即通过历史 API)导航到新问题页面,
然后我按下Ctrl+Enter或只是Enter在标题文本框中,然后弹出窗口会暂时出现,但提交不是挡住了。
(function () {
function init() {
var targArea = document.querySelector('#issue_title'); // New issue title
function manageKeyEvents(zEvent) {
if (zEvent.ctrlKey && zEvent.keyCode === 13) { // and the focused element is the issue title textbox
if (confirm('Are you sure?') === false) {
zEvent.stopPropagation();
zEvent.preventDefault();
// } else {
// var btn = document.querySelector('.btn-primary'); // 'Submit new issue' button
// btn.click();
}
}
}
if (targArea !== null) {targArea.addEventListener('keydown', manageKeyEvents);}
}
init();
document.addEventListener('pjax:end', init); // for the History API
})();
实力:
- 打开https://github.com/darkred/test/issues,
- 单击
New Issue
按钮(您将通过 History API 重定向到https://github.com/darkred/test/issues/new, - (您会注意到现在的焦点在问题标题文本框上)
键入 123 作为问题标题并将焦点保持在问题标题文本框上(将问题正文留空), - 按Ctrl+Enter(或只是Enter),
- 现在请注意,确认弹出窗口将立即出现,
但不会阻止提交。
我的脚本有什么问题?
作为参考,这里列出了 GitHub 的键盘快捷键列表:screenshot,
当你按下 ? 在新的问题页面中。