Запуск Ctrl S с помощью кнопки в js - PullRequest
0 голосов
/ 27 января 2020

Я хочу использовать функцию сохранения в браузере. Как я могу вызвать CTRL + S с помощью кнопки в javascript. Является ли это возможным ? я пробовал это

$("#Save").click(function() {
    var e = $.Event( "keydown", { keyCode: 115, ctrlKey:true} );
    $("body").trigger(e);
});

Ответы [ 4 ]

0 голосов
/ 27 января 2020

Насколько я могу судить, это невозможно. По соображениям безопасности было бы неразумно разрешать браузерам Javascript запускать события, которые взаимодействуют с браузером подобным образом.

Однако есть экспериментальный FileSystemAPI , который вы можете использовать.

Вы можете создать свое собственное модальное всплывающее окно и использовать FileSystemAPI для чтения локальных файлов и предложить пользователю выбрать место для сохранения.

0 голосов
/ 27 января 2020

CTRL + S

Вы можете смоделировать ctrl + s на click событии, как показано ниже:

$("#Save").click(function() {
  e = $.Event("keydown");
  e.which = 83; // S
  e.ctrlKey = true; // CTRL
  $(document).trigger(e);
});
0 голосов
/ 27 января 2020

Вы можете создать собственное событие, используя KeyboardEvent. Но действие по умолчанию, связанное с событием (например, ctrl+s, ctrl+p), не инициируется браузером. Посмотрите на следующее примечание от MDN

Источник - https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent

Примечание: запуск события вручную не создает действия по умолчанию, связанного с этим событием , Например, ручное срабатывание ключевого события не приводит к тому, что эта буква появляется при фокусированном вводе текста. В случае событий пользовательского интерфейса это важно по соображениям безопасности, поскольку не позволяет сценариям имитировать действия пользователя, взаимодействующие с самим браузером.

Код для запуска настраиваемого события:

(() => {
  document.querySelector("#saveMe").addEventListener('click', ($event) => {

    let event = new KeyboardEvent('keydown', {
      key: "s",
      code: "KeyS",
      ctrlKey: true
    });

    document.dispatchEvent(event);
  });

  document.addEventListener('keydown', ($event) => {
    console.log('keydown fired', $event);
  });

})();
<input type="button" id="saveMe" value="Save Me">
0 голосов
/ 27 января 2020

Только с jQuery, импортируйте его в свой файл.

$(document).bind('keydown', function(e) {
  if(e.ctrlKey && (e.which == 83)) {
    e.preventDefault();
    alert('Ctrl+S');
    return false;
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...