Web Workersでエラー
JavaScriptで大量データを処理するとき、その実行速度が問題になることがある。FireFoxなんかだと「処理に時間がかかっています」というダイアログボックスが出ることがあるし、処理中は動作が遅くなってしまう(遅くなるのは現状ではやむを得ないのだが)。そこで並列処理を実装するのだがここで問題が発生した。
開発作業はFireFoxやSafariで動きを確認しつつ、だったのだが、たまたまChromeで見ることがあって「どんな感じかな」と思っていたら全く動いていない様子。「えっ」って感じ。
IEは確か次バージョン(10)で対応だった記憶はあるが、それ以外のブラウザなら際はあまりないんじゃなかったかなー、と腑に落ちなかった。で、コンソールを見たらやっぱりエラーが出ていた。
Uncaught Error: SECURITY_ERR: DOM Exception 18
例外が発生している。発生箇所はWeb Workersをコールしている場所だ。「対応してないわけないよな」と思い、しばらく調べてみたら原因がわかった。どうもローカル環境で使用すると例外エラーが発生するようだ(つまりURLが「file:///」で始まっている場合)。
同じファイルをサーバにアップロードし、HTTP経由でコールして正常に動作することを確認した。いろいろあるなー。