Как я могу генерировать событие нажатия клавиши в Safari с JavaScript?

Попробуйте:

function re_name() {
  var folder=DriveApp.getFolderById("folderId");
  var files=folder.getFiles();
  var date=new Date("August 29, 2018");
  while(files.hasNext()){
   var aux=files.next();
   if(aux.getDateCreated() == date){
     aux.setName(aux.getName().slice(0,-1));//remove last character
     //aux.setName(aux.getName().replace(/s$/,'');//replace last s
     //aux.setName(aux.getName().replace(/\w$/,'');//replace last word character[A-Za-z0-9_]
   }
 }
}

5
задан Greg 8 December 2008 в 18:08
поделиться

4 ответа

Используйте TextEvent (представленный DOM3). Так как Вы надеетесь генерировать события нажатия клавиши, я предполагаю, что Вы работаете с символами. В коде ниже, textToInsert является строкой и текстовой областью элемент, которому я отправляю событие.

var eventObject = document.createEvent('TextEvent');
eventObject.initTextEvent('textInput',
                          true,
                          true,
                          null,
                          textToInsert);

textarea.dispatchEvent(eventObject);

Это работает над Safari 3.1.2 (следовательно, на Chrome).

6
ответ дан 15 December 2019 в 01:13
поделиться

Походит на очень похожее (не конкретный браузер), вопрос задали и уже ответил:

Инициируйте нажатие клавиши с jQuery... и укажите, какая клавиша была нажата

0
ответ дан 15 December 2019 в 01:13
поделиться

У меня была та же проблема. Я хотел смочь записать тест, что, когда клавиша Enter нажимается на GUI, позиция (li) добавляется к списку. Для затем, я должен был "генерировать" нажатие клавиши. Попытавшись генерировать событие, моделируйте событие, дразните событие (jqMock), вот очень простое решение.

Я могу продолжить с BDDing свой код с помощью jsSpec и код jQuery. Этот тест был бы немного более твердым при использовании плагина для управления нажатиями клавиш (например, горячие клавиши плагин jQuery)

Вот то, что я хочу сделать:

describe 'I need to be able to edit items in a list', {

... [setup code and other tests]

'should create a new item if I press enter': function(){ value_of($('#todo').items().size()).should_be(7) // be on the last item in the list task = $('#todo').items().filter(':last').focus() // press enter task.__keypress(13) // check that an item was added value_of($('#todo').tasks().size()).should_be(8) }, }

Вот код, который связывает обработчик. Отметьте с этим решением, я прерываю событие и только прохожу which код - это позволяет мне передавать в значении от теста. Это - все, в чем я нуждаюсь в данный момент. Очевидно, если бы я хотел прервать больше, то я должен был бы развернуть то, что передается в (например, см. jquery.hotkeys плагин):

$().items().bind('keypress', function(event){$().__keypress(event.which)})

И вот обработчик:


  __keypress: function(which){
      switch(which)
      {
        ...

        case 13:  // enter
          [my code that creates a new item]        
          break;
        default:
      }       
  },

PS: если кто-либо может дразнить сообщенный мне window.event. У меня не было удачи с помощью jqMock.

0
ответ дан 15 December 2019 в 01:13
поделиться

http://docs.jquery.com/Events/keypress#fn

Другими словами, Вы присоединяете событие нажатия клавиши к некоторому элементу. Используя элемент с идентификатором "someid", например:

<script language="text/javascript" src="jquery.js"></script>
<script language="text/javascript">
$(function() {
    // add a keypress handler
    $("#someid").keypress(function(e){
        alert('you just pressed ' + e.which);
    });
    // imitate the keypress
    $("#someid").keypress();
});
</script>
-2
ответ дан 15 December 2019 в 01:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: