Как я могу заставить KeyboardEvents изменить значение HTMLInputElement?

5MB - это жесткий предел, и это глупо. IndexedDB дает вам ~ 50 МБ, что является более разумным. Чтобы было проще использовать try Dexie.js https://github.com/dfahlander/Dexie.js

Обновление:

Dexie.js был на самом деле все еще избыток для моих простых целей с ключевыми значениями, поэтому я написал этот гораздо более простой скрипт https://github.com/DVLP/localStorageDB

с этим у вас есть 50 МБ и может получить и установить такие значения

// Setting values
ldb.set('nameGoesHere', 'value goes here');

// Getting values - callback is required because the data is being retrieved asynchronously:
ldb.get('nameGoesHere', function (value) {
  console.log('And the value is', value);
});

Скопировать / вставить строку ниже, чтобы ldb.set() и ldb.get() из приведенного выше примера стали доступны.

!function(){function e(t,o){return n?void(n.transaction("s").objectStore("s").get(t).onsuccess=function(e){var t=e.target.result&&e.target.result.v||null;o(t)}):void setTimeout(function(){e(t,o)},100)}var t=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;if(!t)return void console.error("indexDB not supported");var n,o={k:"",v:""},r=t.open("d2",1);r.onsuccess=function(e){n=this.result},r.onerror=function(e){console.error("indexedDB request error"),console.log(e)},r.onupgradeneeded=function(e){n=null;var t=e.target.result.createObjectStore("s",{keyPath:"k"});t.transaction.oncomplete=function(e){n=e.target.db}},window.ldb={get:e,set:function(e,t){o.k=e,o.v=t,n.transaction("s","readwrite").objectStore("s").put(o)}}}();

1
задан Chris 18 March 2019 в 16:09
поделиться

1 ответ

@ Артем Божко прав - это невозможно. Синтетические события (созданные в скрипте) имеют isTrusted false. Ненадежные события не могут инициировать действия по умолчанию, поэтому они никогда не изменяют входное значение. По очевидным соображениям безопасности isTrusted - свойство только для чтения, так что, насколько я могу судить, все.

Это, к сожалению, делает невозможным создание модульных тестов, которые проверяют поведение пользовательского интерфейса в браузере. Я предполагаю, что Selenium справляется с этим, взаимодействуя с браузером на более низком уровне, но Selenium немного тяжеловесен для тех модульных тестов, к которым я стремлюсь.

0
ответ дан Chris 18 March 2019 в 16:09
поделиться
Другие вопросы по тегам:

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