для Google Apps Script для Google Docs, в файле Sidebar.html я использую этот код (упрощенно, чтобы удалить ненужные части):Google Apps Script HTML - Как сделать триггер событий клавиатуры из всего документа, а не просто кнопкой?
<div class="sidebar branding-below">
<form>
<div class="block" id="button-bar">
<button id="some-action" class="action">Action</button>
</div>
</form>
</div>
<script>
$(function() {
$('#some-action').click(doSomething); //call the method below on button click
google.script.run.withSuccessHandler(loadPreferences)
.withFailureHandler(showError).getPreferences(); //not sure what this does
});
$(document).keydown(function(e){ //only applies to button??
//output whatever key was pressed under the button
var div = $('<div id="clickmsg" class="text">' + 'KeyPressed: ' + e.which + '</div>');
$('#button-bar').after(div);
//Detect CTRL + q keydown combo, which should be unused in windows and chrome
if(e.ctrlKey && e.keyCode == 81){
var div = $('<div id="clickmsg" class="text">' + 'Ctrl+Q detected' + '</div>');
$('#button-bar').after(div);
doSomething(); //calls the method below
}
});
function doSomething() {
this.disabled = true;
$('#error').remove();
google.script.run
[some code...] //doStuff
}
</script>
йоЗотеЬЫпд() срабатывает только тогда, когда я закладками на кнопку. Таким образом, до тех пор, пока кнопка по-прежнему находится под вкладкой, затем под ней отображаются клавиши, которые я нажимаю. Однако при любых обстоятельствах, когда я не привязывался к кнопке, независимо от того, какие клавиши нажаты, этот код нажатия клавиши ничего не выводит.
Обратите внимание, что я использую $ (document) .keydown, но никогда не определяющий «документ» нигде. Однако, как-то он автоматически привязывается к кнопке на боковой панели. Почему это происходит, вместо того, чтобы возвращать ошибку? Как заставить его обнаруживать быстрые клавиши во всех документах google, даже если пользователь просто печатает? Является ли даже правильный способ обнаружения HTML?
Я знаю, что это возможно (возможно) из-за этого сообщения о проблеме, из-за которой я использовал код keybind от issue here, где человек, который опубликовал код носка, сказал, что «новый режим IFRAME в HtmlService разрешает использование ключа коды, которые должны быть переданы надстройкам », если пользователь« щелкнул [ed] on/activate [d] боковую панель в первую очередь ».