WebSQL在Chrome 39中的Web Worker中不起作用

时间:2014-12-23 08:47:13

标签: javascript google-chrome web-worker web-sql

我有一个使用WebSQL构建的网站,用于离线存储。我使用Web Worker在后台运行一些数据库查询。

在最新版本的Chrome 39.0.2171.95中它不再起作用,似乎没有加载WebSQL API。我得到的错误是:

  

未捕获的ReferenceError:未定义openDatabase

的index.html

<html>
    <head>

        <script>

            //opening the database works here
            var db = openDatabase('db','1.0','db',10);
            console.log(db);

            //opening the database fails in web worker
            var syncWorker = new Worker("worker.js");
            syncWorker.postMessage(0);

        </script>

    </head>
    <body></body>
</html>

worker.js

onmessage = function(evt) {

    var db = openDatabase('db','1.0','db',10); //produces Uncaught ReferenceError: openDatabase is not defined
    console.log(db);
};

但是如果Web工作者是动态加载的而不是文件加载的,那么它可以工作:

http://jsbin.com/warokilodi/12/edit?html,js,console,output

除了动态加载worker之外,还有解决方法/修复吗?

1 个答案:

答案 0 :(得分:1)

看起来它不是一个错误,他们在Blink中故意删除了这个功能:

https://groups.google.com/a/chromium.org/forum/m/#!topic/Blink-dev/SYlD0YVUnQk