错误:SecurityError:DOM异常18 Tizen

时间:2017-03-23 23:20:55

标签: javascript security tizen

我试图在我的本地数据库中插入数据。当我打开数据库时,它给了我那个错误。我搜索并发现它必须在try catch块中。我做了但仍然是同样的问题。

var APP_ID = "C44F83E2-6CCA-9BAD-FF5A-CE8C869F7300";
var SECRET_KEY = "39C7F777-F0A0-4DEB-FF35-D147FB5BEB00";
var VERSION = "v1";
var categories = [] ;
var createStatement = "CREATE TABLE IF NOT EXISTS categories(id INT NOT NULL PRIMARY KEY"
  +",name VARCHAR(36) NOT NULL  "
  +",iconName VARCHAR(20) NOT NULL"
  +",category VARCHAR(19) NOT NULL"
  +",score INT NOT NULL)";

var selectAllStatement = "SELECT * FROM categories";

var insertStatement = "INSERT INTO categories(name,category,iconName,score) VALUES (?,?,?,?)";

var dropStatement = "DROP TABLE categories";
var current_item=0;
var total_item=2;
var db;
//database varsion setting
var version = 1.0;
//database name setting
var dbName = "GuessWhat";
//database display name setting
var dbDisplayName = "Guess_What_db";
//database size setting
var dbSize = 2 * 1024 * 1024;

function selectDB() {
if (window.openDatabase) {
  //openDatabase(name, version, displayname, estimatedsize, callback);
  try {
    db = openDatabase(dbName, version, dbDisplayName, dbSize);
    } catch (e) {
        // TODO: handle exception
        console.log(e);
    }


  dropTable(db);
  createTable(db);
  console.log("test base");
  for(var c in categories)
    {console.log(categories[c].getName());
          insertData(db,categories[c].getName()+"",categories[c].getCategory()+"",categories[c].getIconName()+"",categories[c].getScore()); 
  }
  //inserting data in table

  console.log("success");

} else {
  alert("Web SQL Database not supported in this browser");
}
};
function createTable(db) {
try {
  db.transaction(function (t) {
        t.executeSql(createStatement, []);
    });
} catch (e) {
// TODO: handle exception
}

};
function insertData(db, name,category ,iconName,score) {
try {
   db.transaction(function (e) {
        console.log("start insert");
        e.executeSql(insertStatement,[name,category,iconName,score], onSuccess, onError);
    });
} catch (e) {
// TODO: handle exception
console.log(e);
}

};
function onSuccess(e) { };
function onError(e) {console.log("erreur insertion"); };
function dropTable(db) {
try {
   db.transaction(function (e) {
        e.executeSql(dropStatement);
    });
  } catch (e) {
 // TODO: handle exception
 }

 };
window.onload = function () {
// TODO:: Do your initialization job
Backendless.initApp( APP_ID, SECRET_KEY, VERSION );
fetchingFirstPageAsync();

selectDB();
// add eventListener for tizenhwkey
document.addEventListener('tizenhwkey', function(e) {
    if(e.keyName == "back")
try {
    tizen.application.getCurrentApplication().exit();
} catch (ignore) {
}
});

navigation("DOWN");

document.addEventListener('keydown', function(e) {
    switch(e.keyCode){
    case TvKeyCode.KEY_LEFT: //LEFT arrow       
        break;
    case TvKeyCode.KEY_UP: //UP arrow
        navigation("UP");
        break;
    case TvKeyCode.KEY_RIGHT : //RIGHT arrow        
        break;
    case TvKeyCode.KEY_DOWN: //DOWN arrow
        navigation("DOWN");         
        break;
    case TvKeyCode.KEY_ENTER: //OK button
        go_to(current_item);
        console.log("ENTER Button");
        break;
    default:
        console.log("Key code : " + e.keyCode);
        break;          
    }
});

};

function tester(){
console.log("TESTTTTTTT");
};

function navigation(direction){
$("#btn_"+current_item).removeClass("selected_btn");
if(direction == "UP"){
    if(current_item == 1)
        current_item = total_item;
    else
        current_item--;

}else if(direction == "DOWN"){
    if(current_item == total_item)
        current_item = 1;
    else
        current_item++;
}
$("#btn_"+current_item).addClass("selected_btn");
};

function go_to(current_item){
sessionStorage.setItem("key", current_item);
if(current_item==2)
    parent.location="about.html";
if(current_item==1){
    console.log("redirection");
    parent.location="menu.html";
}
};
function fetchingFirstPageAsync(){
var startTime = (new Date()).getMilliseconds();
var c = Backendless.Persistence.of("CategoriesObject").find();
console.log("============ Fetching first page using the SYNC API ============");
console.log( "Loaded " + c.data.length + "restaurant objects" );
console.log( "Total restaurants in the Backendless storage - " + c.totalObjects);

for(var i = 0; i < c.data.length; i++) {
    categories.push(new Category(c.data[i].name+"",c.data[i].iconName+"",c.data[i].score+"",c.data[i].category+""));
    console.log(c.data[i].category) ;

}
for (var i in categories) {

    console.log(categories[i].getName());
}

console.log("Total time (ms) - " + ((new Date()).getMilliseconds() - startTime ));
};

1 个答案:

答案 0 :(得分:0)

根据该文档,目前只有移动应用程序 支持WebSQL 。 我在可穿戴设备上尝试过它,但它没有用。它适用于移动设备。

<强> main.js

       var db;
        //database version setting
        var version = 1.0;
        //database name setting
        var dbName = "tizendb";
        //database display name setting
        var dbDisplayName = "tizen_test_db";
        //database size setting
        var dbSize = 2 * 1024 * 1024;

        function selectDB() {
            if (window.openDatabase) {
                //openDatabase(name, version, displayname, estimatedsize, callback);
                db = openDatabase(dbName, version, dbDisplayName, dbSize);

                dropTable(db);
                createTable(db);

                //inserting data in table
                insertData(db, "tizenTest01", "We are pleased to announce that Tizen 2.0");
                insertData(db, "tizenTest02", "device vendors. We encourage you to download");
                insertData(db, "tizenTest03", "installed and used it. If you have questions");
                insertData(db, "tizenTest04", "This release includes many new features");
                insertData(db, "tizenTest05", "Highlights of this release include");

                dataView(db);

            } else {
                alert("Web SQL Database is not supported in this browser");
            }
        }

        //reads and displays values from the 'places' table
        function dataView(db) {
            var html = document.getElementById("tbody01");
            var ddlHtml = document.getElementById("ddlTitle");
            html.innerHTML = "";
            ddlHtml.innerHTML = "";

            db.transaction(function (t) {
                t.executeSql("SELECT * FROM tizenTable", [],
                function (tran, r) {
                    ddlHtml.innerHTML = "<option value='all'>all</option>";
                    for (var i = 0; i < r.rows.length; i++) {
                        var id = r.rows.item(i).id;
                        var title = r.rows.item(i).title;
                        var content = r.rows.item(i).content;
                        var insertday = r.rows.item(i).insertDay;

                        //data list rendering
                        if (html) {
                            html.innerHTML += "<tr><td>" + id + "</td><td>" + title + "</td><td>" + content + "</td><td>" + insertday + "</td></tr>";
                        }

                        //select box rendering
                        if (ddlHtml) {
                            ddlHtml.innerHTML += "<option value=" + id + ">" + title + "</option>";
                        }
                    }
                },
                function (t, e) { alert("Error:" + e.message); }
             );
            });
        }

        // create table
        function createTable(db) {
            db.transaction(function (t) {
                t.executeSql("CREATE TABLE tizenTable (id INTEGER PRIMARY KEY, title TEXT, content TEXT, insertDay DATETIME)", []);
            });
        }

        //inserting data in table
        function insertData(db, title, context) {
            db.transaction(function (e) {
                var day = new Date();
                e.executeSql("INSERT INTO tizenTable(title, content, insertDay) VALUES (?, ?, ?)", [title, context, day], onSuccess, onError);
            });
        }

        function onSuccess(e) { }
        function onError(e) { }

        // drop table
        function dropTable(db) {
            db.transaction(function (e) {
                e.executeSql("DROP TABLE tizenTable");
            });
        }

        //Select the data conditions
        function dataChange(value) {
            if (value != "all") {
                var html = document.getElementById("tbody01");
                html.innerHTML = "";
                db.transaction(function (t) {
                    t.executeSql("SELECT * FROM tizenTable WHERE id=?", [value],
                function (tran, r) {
                    for (var i = 0; i < r.rows.length; i++) {
                        var id = r.rows.item(i).id;
                        var title = r.rows.item(i).title;
                        var content = r.rows.item(i).content;
                        var insertday = r.rows.item(i).insertDay;

                        if (html) {
                            html.innerHTML += "<tr><td>" + id + "</td><td>" + title + "</td><td>" + content + "</td><td>" + insertday + "</td></tr>";
                        }
                    }
                },
                function (t, e) { alert("Error:" + e.message); }
             );
                });
            } else {
                dataView(db);
            }
        }

        window.onload = function () {
            selectDB();
        };

<强>的index.html

<thead>
     <tr>
        <th>id</th>
        <th>title</th>
        <th>context</th>
        <th>date</th>
     </tr>
</thead>
<tbody id="tbody01">
</tbody>