質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Chrome extension

Chrome拡張機能

Q&A

1回答

2553閲覧

jqueryで画像をダウンロードしたい

coppepan

総合スコア14

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Chrome extension

Chrome拡張機能

0グッド

0クリップ

投稿2018/03/31 06:42

編集2018/03/31 06:52

何回やっても誰に聞いても解決できないので質問させてください。。
google拡張機能を使ってサイトの画像をダウンロードしようとしています。 jquery(version: 3.3.1)を使用しています。

js

1 var link = document.createElement( 'a' ); 2 var imageUrl = "http://kokoro-racing.up.seesaa.net/image/GTS-E794BBE8B3AA.jpg"; 3 link.href = imageUrl; 4 link.download = "file.png"; 5 link.click();

でできると言われていますがリンク先に遷移してしまうだけでダウンロードできません。
このやり方でなくてもいいのですが、chrome拡張機能を使ってjqueryでファイルのurlからローカルに画像を保存する方法をご存知の方がいたら教えてくださいませんか??
そもそもこれって無理なんでしょうか。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Lhankor_Mhy

2018/03/31 06:47

当方の環境で試してみましたが、動作するようでした。環境の問題かもしれませんね。
coppepan

2018/03/31 06:54

回答していただき本当にありがとうございます! アップしたコードを間違っていたので再度みていただけると大変助かります。よろしくお願いいたします。
Lhankor_Mhy

2018/03/31 07:00

download属性は同一ドメイン上でないと、有効にならなかったはずです。そのあたりの問題では?
defghi1977

2018/03/31 07:19

おそらくクロスドメインでの画像ファイルのダウンロードとなるとCORSの問題で一般的なやり方だけでは不可能. 拡張機能に特化した仕組みが必要.
defghi1977

2018/03/31 07:25 編集

なので、「Chrome Extensionをつかったクロスドメインでの画像のダウンロード」を目的としているのであれば、その旨を題名とタグに反映させて下さい. ーーー ???自分でも何を言っているのかわからなくなってきた
defghi1977

2018/03/31 07:24

ああああ、なんかスゲー勘違いしている気がしてきた. 上の投稿ちょっと削除するね
coppepan

2018/03/31 08:26

お二方、ご回答ありがとうございました。 私の勉強不足ですね。。 他のやり方を検討してみます。
defghi1977

2018/03/31 08:30

こちらもすみませんでした. 「こんなの簡単じゃん?」と高をくくってたら、実際に試してみると割と根深い問題が出てきて「できねー」となるとは. やたら混乱させてしまった気がします.
coppepan

2018/03/31 09:51

いえいえ、一人で悩んでいたので素早いアドヴァイス非常に助かりました! ありがとうございました。
guest

回答1

0

NOTE:これは完璧な回答ではありません.ご了承下さい.


汎用的なダウンロード手法はこう.

JavaScript

1(async function(){ 2 const res = await fetch("img.jpg" 3 , {mode: 'no-cors'}); 4 const file = await res.blob(); 5 const link = document.createElement("a"); 6 link.download = "a.jpg"; 7 link.href = URL.createObjectURL(file); 8 link.click(); 9})();

なので、このコードをcontent.js経由でWEBページに流し込めば理論上は可能.

ただし、この方法だとWEBページがクロスオリジンの画像を読み込んでいた場合の画像のダウンロードが不可能.(CORSの制限に引っかかる)

従って, あらゆるケースに対応するには拡張機能による何らかの特権が必要となると考えます.


参考になりそうなリンク
http://matt.coneybeare.me/save-image-to-downloads-chrome-extension/
https://stackoverflow.com/questions/22676270/how-to-call-save-image-as-feature-in-chrome-extension

downloads.download()を使うのが正道なようです.

投稿2018/03/31 07:34

編集2018/03/31 07:44
defghi1977

総合スコア4756

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問