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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

2513閲覧

jQueryでアクセス先エラーの場合の処理方法に関して

KatsukiSugiura

総合スコア335

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2017/05/12 11:51

編集2017/05/15 15:43

HTMLタグのimgやaタグのアクセス先が指定したパスから変更になった場合などの対処をしようと考えていたのですが、どういった対処方法が良いでしょうか?

jqueryのerror()でimgの対応は出来たのですが、非推奨と有りましたので、ajaxでアクセスし、URLの指定、succes、errorで振り分けたのですが、全てエラーになってしまいました。

どんな対処方法が最適でしょうか?

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

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

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

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

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

yambejp

2017/05/16 01:36

XSSについては無視してよいですか?promiseで処理すればimgは比較的簡単。aはhrefの先をどうしたいのでしょう?404エラーをチェックしたいのでしょうか?
KatsukiSugiura

2017/05/16 02:12

ありがとうございます。何がしたいのかをお伝えした方が理解してもらいやすいかと思いますので、ご説明致します。wordpressで利用しているDBを変更し、記事を移転した際にイメージとリンクが上手く表示されない記事が多々あると言う状況になりまして、こういった際の修正にjqueryで対応し、プラグインなど制作しておけば次回から対応し易いと、汎用性が高いと考えています。リンク先は404エラーの場合、接続エラーの場合含み正常に表示されない場合に代替メッセージで要素入れ替えを考えています。xss無視して問題なければ無視して構いませんが問題あれば無視しません。
yambejp

2017/05/16 02:25

具体的にはどういった処理をご希望なのでしょう?imgのsrcは読み先がなければ画像が表示されないので見た目上判断できますが、それとは別にプログラム的に判断したいのですか?その際エラーだったら結果をどう表示したいのでしょうか?aについても同様、結果をどう返したいのでしょう?
guest

回答1

0

ベストアンサー

ちょっと書いてみました
ajaxで読んで404エラーだったタグを抜き出して隠しています

javascript

1<script src="https://www.promisejs.org/polyfills/promise-6.1.0.min.js"></script> 2<script> 3window.onload=function(){ 4 var prm=[]; 5 var tags=document.querySelectorAll("img,a"); 6 for(var i=0;i<tags.length;i++){ 7 (function(i){ 8 prm[i]= new Promise(function(resolve){ 9 var xhr = new XMLHttpRequest(); 10 xhr.open('GET', tags[i].getAttribute("href")||tags[i].getAttribute("src")); 11 xhr.responseType = 'arraybuffer'; 12 xhr.addEventListener("load" ,function() { 13 resolve(xhr.status==404?tags[i]:null); 14 }); 15 xhr.send(); 16 }); 17 })(i); 18 Promise.all( prm ).then(function(data){ 19 for(var i=0;i<data.length;i++){ 20 if(data[i]) data[i].style.display="none"; 21 } 22 }); 23 } 24}; 25</script> 26

※IE対策でpromiseのライブラリ読んでますが、他のブラウザだけでよいならいりません

投稿2017/05/16 09:12

yambejp

総合スコア114759

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問