下記のコードは、addEventListener() メソッドを使って、パソコンキーボードの[F]のキーを押したら、indexedDBのデータベースに、データが挿入されるようにしようとしています。
しかし、データベース用に定義した、関数のDateInsert()が、コメントアウトの(1)の箇所では、しっかりと動いており、Chromeブラウザで確認しても、データが挿入されている一方で、
(2)の場所に置くと全く動きません。(2)の箇所でデータを挿入したいので、この場所で動かすには、どのような解決方法がありますでしょうか?
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>Test</title> </head> <body> <script> (function() { 'use strict'; //データベースとストア作成 var dbName ='Test'; var storeName ='SampleDate'; var db; var indexedDB = window.indexedDB || window.mozIndexedDB || window.msIndexedDB; var openRequest = indexedDB.open(dbName, 1.0); openRequest.onupgradeneeded = function(e) { db = e.target.result; db.createObjectStore(storeName, { keyPath: 'id'}); } //挿入用データ var data = {id : '10300', time : 'Hello World!'}; //データ挿入の為の関数 function DateInsert(){ openRequest.onsuccess = function(e){ db = e.target.result; var putReq = db.transaction(storeName, 'readwrite').objectStore(storeName).put(data); } } //DateInsert(); //(1)動く window.addEventListener('keydown', function(e) { if(70 == e.keyCode){ //F key alert(); DateInsert(); //(2)動かない } }); })(); </script> </body> </html>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/06 14:13