在 Confluence 的 Javascript 内添加自定义快捷键
Add a custom key shortcut within Javascript in Confluence
在我的工作中,我们使用 Confluence。我需要编辑页面上等宽格式的快捷方式。
本机快捷方式是 CTRL+SHIFT+M。它是通过 MyFlow 功能在 Opera 中获取的,无法更改。
是否有使用 Javascript 代码来实现的选项?
(我可以在浏览器扩展中进行 JS 注入。)
用于快捷方式的常规 JS 代码可以正常工作,但 不能 在合流编辑页面上:
// define a handler
function monospaceKeyTrigger(e) {
// this would test for whichever key is 40 and the ctrl key at the same time
if (e.ctrlKey && e.shiftKey && e.keyCode == 90) {
// trigger click on monospace button
//document.getElementById("rte-monospace").click();
alert('!!monospace!!');
}
}
// register the handler
document.addEventListener('keyup', monospaceKeyTrigger, false);
那么,我错过了什么?
我想,由于编辑器 JS 功能,它根本不会触发...
大家有什么建议吗?
找到。
//Set CTRL+SHIFT+L shortcut for monospace formatting in the editor
window.AJS.Rte.getEditor().shortcuts.add("ctrl+shift+l","monospace","confMonospace");
干杯
P.S。
感谢您发帖:
- https://webapps.stackexchange.com/questions/35383/shortcut-key-for-monospaced-character-format-in-confluence(已过时,但有助于理解如何传递参数)
- https://searchcode.com/codesearch/view/37330905/#47,看看
Confluence.KeyboardShortcuts
中的快捷方式列表
P.P.S。浏览器就绪 Javascript 代码(在 Atlassian Confluence 6.15.2 中测试)
简单:
// Set monospace formatting for a key shortcut in confluence
// Use a browser extension for injecting this code snippet
(function () {
window.AJS.Rte.getEditor().shortcuts.add(
'ctrl+shift+l',
"monospace",
"confMonospace"
);
}());
过度保护:
// Set monospace formatting for a key shortcut in confluence
// Use a browser extension for injecting this code snippet
console.log('include CJS');
let confKeyAdd = {
run: function () {
this.key = {
keyCode: 'ctrl+shift+l',
codeType: 'monospace',
codeConfType: 'confMonospace'
};
this.setKey();
},
waiter: function (shouldWaitCall, successCall, repeat = 10, interval = 1000) {
let timerId;
//wait here
timerId = setInterval(
function () {
if (--repeat < 0) {
console.log('confKeyAdd: Have not found an object.');
clearTimeout(timerId);
return;
}
if (shouldWaitCall()) {
console.log('confKeyAdd: Still waiting... [' + repeat + ']');
return;
}
clearTimeout(timerId);
// call me!
successCall();
},
interval
);
},
setKey() {
let _this = this;
// first call: should-wait
// second call: success
this.waiter(
function () {
console.log('confKeyAdd: Checking...');
return typeof window.AJS === 'undefined'
|| window.AJS.Rte.getEditor() === null
|| !window.AJS.Rte.getEditor().shortcuts;
},
function () {
console.log('confKeyAdd: Adding a key shortcut for: ' + _this.key.keyCode);
window.AJS.Rte.getEditor().shortcuts.add(
_this.key.keyCode,
_this.key.codeType,
_this.key.codeConfType
);
},
);
}
};
confKeyAdd.run();
在我的工作中,我们使用 Confluence。我需要编辑页面上等宽格式的快捷方式。 本机快捷方式是 CTRL+SHIFT+M。它是通过 MyFlow 功能在 Opera 中获取的,无法更改。
是否有使用 Javascript 代码来实现的选项?
(我可以在浏览器扩展中进行 JS 注入。)
用于快捷方式的常规 JS 代码可以正常工作,但 不能 在合流编辑页面上:
// define a handler
function monospaceKeyTrigger(e) {
// this would test for whichever key is 40 and the ctrl key at the same time
if (e.ctrlKey && e.shiftKey && e.keyCode == 90) {
// trigger click on monospace button
//document.getElementById("rte-monospace").click();
alert('!!monospace!!');
}
}
// register the handler
document.addEventListener('keyup', monospaceKeyTrigger, false);
那么,我错过了什么?
我想,由于编辑器 JS 功能,它根本不会触发...
大家有什么建议吗?
找到。
//Set CTRL+SHIFT+L shortcut for monospace formatting in the editor
window.AJS.Rte.getEditor().shortcuts.add("ctrl+shift+l","monospace","confMonospace");
干杯
P.S。 感谢您发帖:
- https://webapps.stackexchange.com/questions/35383/shortcut-key-for-monospaced-character-format-in-confluence(已过时,但有助于理解如何传递参数)
- https://searchcode.com/codesearch/view/37330905/#47,看看
Confluence.KeyboardShortcuts
中的快捷方式列表
P.P.S。浏览器就绪 Javascript 代码(在 Atlassian Confluence 6.15.2 中测试)
简单:
// Set monospace formatting for a key shortcut in confluence
// Use a browser extension for injecting this code snippet
(function () {
window.AJS.Rte.getEditor().shortcuts.add(
'ctrl+shift+l',
"monospace",
"confMonospace"
);
}());
过度保护:
// Set monospace formatting for a key shortcut in confluence
// Use a browser extension for injecting this code snippet
console.log('include CJS');
let confKeyAdd = {
run: function () {
this.key = {
keyCode: 'ctrl+shift+l',
codeType: 'monospace',
codeConfType: 'confMonospace'
};
this.setKey();
},
waiter: function (shouldWaitCall, successCall, repeat = 10, interval = 1000) {
let timerId;
//wait here
timerId = setInterval(
function () {
if (--repeat < 0) {
console.log('confKeyAdd: Have not found an object.');
clearTimeout(timerId);
return;
}
if (shouldWaitCall()) {
console.log('confKeyAdd: Still waiting... [' + repeat + ']');
return;
}
clearTimeout(timerId);
// call me!
successCall();
},
interval
);
},
setKey() {
let _this = this;
// first call: should-wait
// second call: success
this.waiter(
function () {
console.log('confKeyAdd: Checking...');
return typeof window.AJS === 'undefined'
|| window.AJS.Rte.getEditor() === null
|| !window.AJS.Rte.getEditor().shortcuts;
},
function () {
console.log('confKeyAdd: Adding a key shortcut for: ' + _this.key.keyCode);
window.AJS.Rte.getEditor().shortcuts.add(
_this.key.keyCode,
_this.key.codeType,
_this.key.codeConfType
);
},
);
}
};
confKeyAdd.run();