웹 저장소의 크기 제한에 도달하면 Mobile Safari (및 Android 브라우저)에서 저장소 크기를 늘리라는 메시지가 표시됩니다. 그런 일이 발생하면 트랜잭션, onSuccess 콜백 또는 onError 콜백이 실행되지 않습니다. 어떤 예외도 여기에서 잡을 수는 없으므로 저장소를 늘리라는 메시지를 어떻게 처리해야합니까?증가 된 웹 저장 용량에 대한 프롬프트를 처리하는 방법은 무엇입니까?
모든 작업은 비동기식이므로 시간 초과를 설정하고 잠시 후 트랜잭션이 완료되었는지 확인하면됩니다. 물론 불쾌한 버그에 휩싸인 해킹입니다. 그리고 그 외에도 공간이 증가했는지 여부를 실제로 확인하기 위해 트랜잭션을 다시해야합니다.
// open the jsfiddle in safari
// refuse when prompted to increase space to show the bug
db.transaction(function (tx) {
tx.executeSql("INSERT INTO key_value(key, value) VALUES(?,?);", ["mykey", buildBigString(3*Math.pow(10,6))], function (tx, result) {
// will never be called
done();
}, function (tx, error) {
// will never be called
done();
});
});
관련 : http://stackoverflow.com/questions/15066203/websql-transaction-does-rollback-if-size-limit -is-reached – oligofren