S
S
Sergey Murzin2014-02-08 16:35:03
JavaScript
Sergey Murzin, 2014-02-08 16:35:03

How to insert data into WebSQL?

I'm making an app for Chrome.
WebSQL was chosen to store some of the data.
The base itself is created.

function baza (f) {
  bd = openDatabase("linkDemo","1.0","Количество вкладок",1024*1024*5);
  switch (f) {
    case "open":
      bd.transaction(function(tx){
        tx.executeSql("CREATE TABLE IF NOT EXISTS todo (ID INTEGER PRIMARY KEY ASC,todo_item TEXT,due_date VARCHAR)");
      })
      break
    case "save":
      bd.transaction(function(tx){
        tx.executeSql("INSERT INTO todo (todo_item,due_date) VALUES (?,?)", ["Яндкс","ya.ru"])
      })
      break
    case "load":
      // Загрузка из БД
    default:
      alert ('Не задано действие')
      break
  }
}
onload  = function () { 

  // Некоторые действия при загрузки

  baza ("open")
}

But the data is somehow reluctantly inserted
function savenewlink (){
  // Сбор данных из формы
  baza ("save") // и будут вноситься в функция

  //А вот здесь самое интересное
//	alert ('Закончили')
}

If there is alert(), then the data is entered into the WebSQL table, and if it is commented out (absent), then the data is not entered.
The function itself is called with addEventListener()
document.addEventListener( "DOMContentLoaded" , function () {
  // Несколько других событий
  document.getElementById("savelink").addEventListener( "click" , savenewlink);
});

This is due to Chrome security , which I don't know how to bypass. When using onclick, an error occurs:
Refused to execute inline event handler because it violates the following Content Security Policy directive: "script-src 'self' chrome-extension-resource:".

How to enter this data without alert()?
How does alert() affect the script?
Is there any way to bypass security policy restrictions?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
S
Sergey Murzin, 2014-02-08
@Atlant_T

As always: once you ask a question, the answer comes by itself.
The problem was elsewhere.
addEventListener() was attached to a tag which, when clicked, would cause the page to reload and eventually lose data.
alert() made it possible to enter data (although by what principle I'm not entirely clear) while the script was stopped.
I solved the problem by binding the event to the tag.
Let the gurus correct me if something is wrong.
Маркетолог спрашивает программиста: в чём сложность поддержки большого проекта?
Программист: ну представь, что ты писатель и поддерживаешь проект «Война и мир». У тебя ТЗ — написать главу, как Наташа Ростова гуляла под дождём по парку. Ты пишешь «шёл дождь», сохраняешь, вылетает сообщение об ошибке «Наташа Ростова умерла, продолжение невозможно». Почему умерла? Начинаешь разбираться. Выясняется, что у Пьера Безухова скользкие туфли, он упал, его пистолет ударился о землю и выстрелил в столб, а пуля от столба срикошетила в Наташу. Что делать? Зарядить пистолет холостыми? Поменять туфли? Решили убрать столб. Получаем сообщение «Поручик ржевский умер.» Выясняется, что он в следующей главе облокачивается о столб, которого уже нет…

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question