ウェブページからオフラインストレージにリンクされている画像を2つ保存しようとしています。私は、Firefox上でIndexedDBを、Chrome上でFileSystem APIを使用しています。私のコードは実際には拡張機能なので、FirefoxではGreasemonkeyとChromeでコンテンツスクリプトとして実行しています。私はこれを自動化したい。クロスサイト<img/>タグのデータをブロブとして取得できますか?
イメージファイルを取得するときに問題が発生しています。私はStoring images and files in IndexedDBというタイトルのサンプルコードを使用していますが、エラーが発生します。ダウンロードしようとしている画像が別のサブドメインにあり、XHRが失敗します。
XMLHttpRequest cannot load http://...uxgk.JPG. Origin http://subdomain.domain.com is not allowed by Access-Control-Allow-Origin.
私はおそらくGM_xmlhttpRequest
を使用することができ、それは(私が同一生成元のURLにいる時にコードが両方のブラウザ上で動作します)動作すると思いますが、私はまだ、Chromeの問題を解決する必要があるのFirefox上のどの中他の制約(つまり、ホストページのフレームとやり取りする必要がある)では、スクリプトをページに組み込んで自分の特権を失う必要があります。
私は、IndexedDBやFileSystem APIにページにリンクされている(そしてそこに表示されるかもしれない)イメージを保存する方法を見つけようとしていることに戻ります。 Chromeのクロスオリジンの問題を解決する方法を理解する必要があります(また、特権が必要な場合は、jQueryとやりとりする方法を修正する必要があります)。逆の場合はcreateObjectURLとなります。最後に、IndexedDB(Firefox)に入れたり、FileSystem API(Chrome)に書き込むためにブロブ(File
オブジェクト、私が理解する限り)が必要です
ヘルプ、誰ですか?
編集:私の質問は実際には本当に私はChromeで私のコンテンツスクリプトの権限を失うことなく、jQueryの私が望むように使用することができますどのように降りてくることがあります。私がすれば、I could use cross-origin XHRs on Chromeも同様です。私はむしろ、それに頼らない解決策を得たいと思っています。具体的には、スクリプトをWebページに組み込み、コンテンツスクリプト/ userscriptにする必要がない場合は、このソリューションを希望します。
編集:私は質問がのみについてクロスサイトはを要求していることに気づきました。今私は、@ chris-sobolewski、thesequestionsとthis fiddleで見ることができるいくつかの他のページ(thisのような)の助けを借りて、画像ブロブを得る3つの方法のうちの1つを持っています。しかし、これらのすべてには、実行するために特別な権限が必要です。悲しいかな、私はa known defect in Chromeのためにフレームがあるページを実行しているので、フレームにアクセスできません。だから私はall_frames: true
を使って各フレームにスクリプトを読み込むことができますが、実際にはすべてのフレームロードでスクリプトを読み込まないようにしたいと思っています。さもなければ、according to this article、私はサンドボックスをエスケープする必要がありますが、その後は特権に戻ります。
""という設定権限を試してみましたか?私はあなたのjqueryの問題が何であるかを理解していません。もう少し説明する必要があります。コンテンツスクリプトのjsパラメータを使ってコンテンツスクリプトに挿入していますか? '' jquery.js ''、 "myscript.js"] ' –
PAEz
' jquery.js'を 'js'配列に追加するとロードされますが、別の問題が発生します:フレームを使用しています今、私はここに記載されたバグ(http://code.google.com/p/chromium/issues/detail?id=20773)に直面しています。私が見つけることができる唯一の解決策は、サンドボックスから抜け出すことです(http://blog.afterthedeadline.com/2010/05/14/how-to-jump-through-hoops-and-make-a-chrome-extension/) – Yuval