JavaScriptでimgタグなしで画像URLから画像を表示したいです。

このQ&Aのポイント
  • JavaScriptを使用して、imgタグなしで画像URLから画像を表示する方法を調べています。
  • 画像の種類はjpg、png、gifに対応できるようにしたいです。
  • jQueryを使用せずに、URLや画像URLが文章の途中にあっても正しく処理できるようにしたいです。
回答を見る
  • ベストアンサー

imgタグなしで画像表示

imgタグなしで画像表示 JavaScriptでimgタグなしで画像URLから画像を表示したいです。 具体的には、次のビフォアフターのようにしたいです。 ■ビフォア (タグなしのプレーンな文章) サンプル文章サンプル文章サンプル文章。 http://sample.com/ サンプル文章サンプル文章サンプル文章。 http://sample.com/1.jpg 写真1 画像2 http://sample.com/2.png 画像3 http://sample.com/3.gif アニメーション ■アフター (JSでimgタグとaタグが自動挿入される) サンプル文章サンプル文章サンプル文章。 <a href="http://sample.com/">http://sample.com/</a> サンプル文章サンプル文章サンプル文章。 <img src="http://sample.com/1.jpg"> 写真1 画像2 <img src="http://sample.com/2.png"> 画像3 <img src="http://sample.com/3.gif"> アニメーション ■第1希望 (ぜひとも) 画像の種類はjpg、png、gifに対応可能にしたいです。 現在、URLを自動でハイパーリンク有りに変換していますので、これと競合しないようにもしたいです。 次のコードを使っています。 $("#main").each(function(){$(this).html($(this).html().replace(/((http|https|ftp):\/\/[\w?=&.\/-;#~%-]+(?![\w\s?&.\/;#~%"=-]*>))/g,'<a href="$1" target="_blank">$1</a>'));}); ■第2希望 (可能であれば) 上記コードはjQuery必須ですが、可能ならjQueryを使いたくないです。なので、上記コードをそのままつかわずに、aタグとimgタグを自動挿入されるようにしたいです。 文章の途中にURLや画像URLがあっても正しく処理してほしいです。 ■第3希望 (お時間をさらにいただけるなら) コードの簡単な解説をお願いしたいです。 上記コードであれば、「(http|https|ftp):\/\/」が「http;//」等をあらわすのを次のページで理解しました。 http://www.openspc2.org/JavaScript/Ajax/jQuery_plugin/chapter8/index.html また、「$1」が検索対象の文字列であるのも理解しています。 「<a href="$1" target="_blank">$1</a>'」でハイパーリンクを生成しているのも理解しています。 簡単な解説をしていただけましたら、それを元に https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions で知見を深める所存です。 ■m(__)m そのままずばりの回答でなくとも、参考URLなどのご提案も助かります。 また、質問の意図がいまいち伝わりにくいようでしたら、その旨記載いただけましたら、加筆いたします。 どうぞよろしくお願いいたします。

  • v4u
  • お礼率100% (6/6)

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

>~~であるのも理解しています。 とのことですので、ご質問の内容は、現在ご利用なさっているコードとほとんど同じような処理で実現できるのではないでしょうか? > 可能ならjQueryを使いたくないです。 普通であれば、idは一意のはずなので、 >$("#main").each(function(){~~ のようにeachで処理する必要はないでしょう。 また、$("#main")の代わりに、document.getElementById()などを、html()の代わりにinnerHTMLを用いることでjQueryをはずすことも比較的簡単にできるものと思います。 >これと競合しないようにもしたいです。 別々に処理しないで、一連の処理のなかで場合分けして処理するのが効率的ではないでしょうか。 アドレスが画像(jpg、png、gifで終わる)だったら画像の処理を、それ以外ならリンクの処理をしてあげれば良さそうです。 ご提示のコードは、絶対アドレス指定のみを対象にしていますが、これに限定してよいのであれば、上記の方法で可能と思います。 対象に相対指定も含まれる場合は、urlであることの判定が一番難しいのではないかと。

v4u
質問者

お礼

すばらしい回答でした。 お陰様で全ての希望が実現しました。 >現在ご利用なさっているコードとほとんど同じような処理で実現できる そのとおりでした。 >document.getElementById()などを、html()の代わりにinnerHTMLを用いることで そのとおりでした。 >一連の処理のなかで場合分けして処理するのが効率的 そのとおりでした。 回答内容もさることながら、できるだけ自力でできるようにアドバイスしてくださる回答方法もすばらしかったです。 今回回答いただけたことで、新たな視点で問題を見つめなおすことができました。 ありがとうございました!

その他の回答 (1)

回答No.2

私的意見として そういうものは、製作者側のエディタ(のマクロとか)でやってほしい。 個々の見る側で、いちいちそのようなスクリプトが走るのは、無駄。 jQuery を読み込んで処理してる間に・・・ごっほん!

v4u
質問者

お礼

おっしゃるとおりです。 そのような考えがすっぽり抜けていました。 多角的見地からのご回答ありがとうございました。

v4u
質問者

補足

後出しで申し訳ないです。 HTMLタグをまったく分からない方が、ハイパーリンクと画像表示をできるだけ簡単に利用できる方法を模索しています。 また、想定している利用方法は小規模サイトの些細な更新で1ページあたり500文字以下程度です。 今回ご回答をいただけなければ、規模の大きなサイトでも今回のJSを使ってしまっていたと思います。 今後、製作者側で簡単に一括変換できる方法を検討します。 ありがとうございました。

関連するQ&A

  • テキストエリアに画像URLを貼り付ける入力支援

    簡単なCGI日記を作成してますが、この入力フォームのテキストエリアに手動で画像URLのタグを入れるのが手間なので、 ↓ サーバーにある画像一覧が別窓(違うファイルから)で表示されていて(実際には画像表示ですが・・・) <a href="sample1.gif"><img src="sample1.gif"></a> <a href="sample2.gif"><img src="sample2.gif"></a> <a href="sample2.gif"><img src="sample2.gif"></a> ↓ 画像をクリックするとCGIのテキストエリア内に自動で <a href="sample1.gif"><img src="sample1.gif"></a>とタグを挿入するjavascriptってサンプルになるようなものはないでしょうか?

  • srcに「banner.」で始まるファイルを指定しているimgタグが消える

    急に謎の症状が発生して困っています。 何か知っている方がいたらご教示お願いします。 謎の症状が起きるスクリプトの例------------------------ echo '<div>'; echo '<a href="hoge1"><img src="img/banner.jpg"></a>'; echo '<a href="hoge2"><img src="img/banner2.gif"></a>'; echo '<a href="hoge3"><img src="banner.gif"></a>'; echo '<a href="hoge4"><img src="banner.png"></a>'; echo '<a href="hoge5"><img src="hogehoge.gif"></a>'; echo '</div>'; ------------------------------------------------------ 上記のようなスクリプトを実行した場合に、3行目の「img/banner2.gif」と6行目の「hogehoge.gif」を指定しているimgタグしか表示されません。 残りはimgタグの部分だけ綺麗さっぱりに消えてaタグの部分だけ表示されます。実行結果が下記のようになるのです。(実際には改行されませんが、見やすいように改行してます。) 実行結果--------------------------------------- <div> <a href="hoge1"></a> <a href="hoge2"><img src="img/banner2.gif"></a> <a href="hoge3"></a> <a href="hoge4"></a> <a href="hoge5"><img src="hogehoge.gif"></a> </div> ----------------------------------------------- banner.gifやimg/banner.gifは表示されるファイルと同じディレクトリの中に存在しています。 昨日ちゃんと表示されていたのを確認しました。そのときからサーバーの設定は変更していないので、何が原因なのかが分かりません。 過去に同じような症状が起こった方はいないでしょうか? PHPのエラーログを見てもエラーも警告もありませんでした。 【環境】 OS: CentOS/5 HTTPD: Apache/2.2.3 PHP: PHP/5.1.6(eAccelarator、ZendOptimizerが入ってます) ちなみに「banner」だけだとOKでした。「banner.」が付くとダメみたいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • タグ切り替えのJavaScriptについて

    タグを切り替えるJavaScriptと http://archiva.jp/web/javascript/tab-menu.html (参考サイト) ロールオーバーのJavaScript http://css-happylife.com/template/14/ (参考サイト) この2つを組み合わせようと思ったのですが、どうにもうまくいきません。 今記述しているままではロールオーバーで画像が切り替わりますが、選択しているタグが元の画像に戻ってしまいます。 詳しく説明すると、タグ切り替えのサンプルページでは、Page3を押すとPage3のタグの部分が黒く切り替わっていると思います。しかし、今の記述ではロールオーバーの時しか画像が変わらずマウスを外すと元に戻ってしまいます。 サンプルページではフォントとbackgroud-colorを使用して #tab li a:hover, #tab li.present a { border-color: #333; color: #000; } ここで適用していると思います。 しかし、私は画像を使って切り替えたいのです。 色々試してみたのですが、どうにもうまくいかないため投稿しました。 お力添えよろしくお願いします。 ↓現在の記述↓ <!------------html------------> <ul id="tab"> <li><a href="#page1"><img src="img/about_gnavi_what_off.gif"></a></li> <li><a href="#page2"><img src="img/about_gnavi_type_off.gif"></a></li> <li><a href="#page3"><img src="img/about_gnavi_tellme_off.gif"></a></li> </ul> <!------------css------------> ul#tab{ margin:0; padding:0; } ul#tab li{ float:left; display:inline; margin:8px 0 0 10px; }

    • ベストアンサー
    • CSS
  • 画像がうまく表示されないのですが

    ページを見るごとにランダムで画像が変わるタグを書き込んだのですが・・・ タグ1 <script language="JavaScript"> <!-- var simg=new Array(5); simg[0]="icon1.png"; simg[1]="icon2.png"; simg[2]="icon3.png"; simg[3]="icon4.png"; simg[4]="icon5.png"; var Myimg=Math.floor(5*Math.random()); document.write("<img src='"+simg[Myimg]+"'>"); //--> </script> タグ2 <SCRIPT LANGUAGE="JavaScript"> <!-- simg=new Array(2); simg[0]="<a href="XXX" target="_blank"><img src="XXX.jpg" border=0></a>"; simg[1]="<a href="XXX" target="_blank"><img src="XXX.jpg" border=0></a>"; Myimg=Math.floor(2*Math.random()); document.write("<img src='"+simg[Myimg]+"'>"); //--> </SCRIPT> タグ1はインフォシークのサーバーでは表示されたのですが、A-RINGSのサーバーでは表示されなかったので、サーバーの問題で表示されないのでしょうか? 表示されないとしたらどのようにしたら表示されるものなのでしょうか? タグ2はどちらのサーバーも表示されませんでした。 どうしたらちゃんと表示されますでしょうか?

  • 画像をクリックして別の画像を変えたい

    ボタン画像をクリックしたときに同一ページ内にある画像が変わるようにしたいのですが、下のように描くと、ボタン画像(button.gif)自身が2.pngなどの画像に変わってしまいます。   <HTML> <HEAD> <TITLE>スワップイメージ</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-- function changeImage(imageUrl){ document.images[0].src = imageUrl; } // --> </SCRIPT> </HEAD> <BODY> <A HREF="#" onClick="changeImage('1.png')" ><IMG SRC="button.gif" border="0"></A> <A HREF="#" onClick="changeImage(2.png')" ><IMG SRC="button.gif" border="0"></A> <A HREF="#" onClick="changeImage(3.png')" ><IMG SRC="button.gif" border="0"></A> <TABLE BORDER="0"> <TR> <TD>ボタンを押すと下に画像が表示されます。</TD> </TR> <TR> <TD><IMG SRC="1.png"></TD> </TR> </TABLE> </BODY> </HTML> 原因を私なりに考えたところ、設定した変数mageUrlをボタンを表示させるために使った<img src="button.gif">で受け取ってしまっているというのはわかりました。(確認のため <IMG SRC="1.png"> を<A HREF>~</A>より上に持ってきたら思っていた動きになりました。)  けれどそれからどう修正したらもとの順番でもちゃんと動くのかがわかりません。過去ログの似た質問も拝見したのですが、今の自分では理解できませんでした‥。すみませんがよろしくお願いいたします。

  • jQueryを使った画像の切り替え方法を教えてください

    [文字サイズ大][文字サイズ中][文字サイズ小] などのボタン画像を押したら、 フォントサイズを変更すると共に、 ボタンが押された状態の画像に切り替えたいのですが、 それをjQueryを使って実行する方法を教えてください。 http://www.lllcolor.com/web/jquery/29.html ↑フォントサイズ変更のスクリプトはこのページのものを拝借しました。 http://weboook.blog22.fc2.com/blog-entry-6.html ↑画像切り替えはこのようなシンプルなものにしたいです。 jQuery版を探したのですが、高機能なものは見つかるのですが シンプルでなおかつ自分で組み込めそうなものが見当たらなかったので…。 ★HTMLは単純にこんな感じです <a href="#" class="sizeL"><img src="img/fontL.gif"></a> <a href="#" class="sizeM"><img src="img/fontM.gif"></a> <a href="#" class="sizeS"><img src="img/fontS.gif"></a>

  • imgタグとレスポンシブについて

    imgタグとレスポンシブについて imgタグなどのようなインライン要素は、 ブロック要素で囲まないといけないと聞いたのですが、下記のような形でナイトいけないのですよね 下記のように直前にブロック要素で囲まれていないといけないのでしょうか? <div class="copyright"> <img src="img/base/copyright.png" alt="のコピーライト" width="382" height="24" /> </div> 下記のように直前にブロック要素で囲まれていないといけないのでしょうか? それとも直接ブロック要素で囲まれていなくてもずっと先にブロック要素があってそこから入れ子になっていればいいのでしょうか? ~ <td class="copyright"> <address> 〒***-*** **県**市**町 1-5-10 <span>TEL.0977-84-****</span> </address> <ul class="futtnavi"> <li><a href="http://index.html"><img src="img/base/sitemap.png" alt="サイトマップ" width="101" height="18" /></a></li> <li><a href="http://index.html"><img src="img/base/sitemap.png" alt="サイトマップ" width="101" height="18" /></a></li> </ul> <img src="img/base/copyright.png" alt="会のコピーライト" width="382" height="24" /> </td> ~ 下記はだめですよね。 <H2>画像</H2> <IMG src="img/img0.jpg" width="120" height="90" alt="写真" border="0" align="top"> 文字が上揃えになります<BR> <BR> <IMG src="img/img1.jpg" width="120" height="90" alt="写真" border="2"> 枠の太さを2にしています<BR> <BR> <IMG src="img/img2.jpg" w また、もうひとつになってしまうのですが、下記のimg をフルイドイメージにしたい場合は画像のたて、横はば割る直前のブロック要素のtdのwidthと縦幅(クロームのf12で出てくるpx)で出した%を ul.futtnavi+img { width: 67.3%; height: 18%; } のように入れれば良いのですよね。 tdのサイズは567px,133px imgは382、24です。 うまくぴったりのサイズになりません。 スマホでは消えます。 またtdの中の内容が増えた場合毎回計算しなおさないといけないのでしょうか? ~ <td class="copyright"> <address> 〒***-*** **県**市**町 1-5-10 <span>TEL.0977-84-****</span> </address> <ul class="futtnavi"> <ul class="futtnavi"> <li><a href="http://index.html"><img src="img/base/sitemap.png" alt="サイトマップ" width="101" height="18" /></a></li> <li><a href="http://index.html"><img src="img/base/sitemap.png" alt="サイトマップ" width="101" height="18" /></a></li> </ul> <img src="img/base/copyright.png" alt="会のコピーライト" width="382" height="24" /> </td>

    • ベストアンサー
    • CSS
  • 2箇所の画像をランダムに複数表示

    はじめましてjavascript初心者のものです。 2箇所に配置されてる各画像をランダムに表示したく、以下宣言をしてますがどうしても2箇所目が表示されません。お手数ですが、教えてください! 2箇所目をrandWrite_sとして名前を変更してます。 ▼▼▼▼▼▼▼▼▼▼▼▼meta内タグ▼▼▼▼▼▼▼▼▼▼▼▼ <script type="text/javascript"> <!-- // ランダムに画像を表示する1箇所目 var randObjects=[ '<a href="#"><img src="/images/ad_banner01.gif"></a>', '<a href="#"><img src="/images/ad_banner02.gif"></a>', '<a href="#"><img src="/images/ad_banner03.gif"></a>' ]; function randWrite() { var rr = parseInt(Math.random() * randObjects.length); document.write(randObjects.slice(rr)[0]); randObjects.splice(rr,1); } //--> </SCRIPT> <script type="text/javascript"> <!-- // ランダムに画像を表示する2箇所目 var randObjects=[ '<a href="#"><img src="/images/ad_banner01_s.gif"></a>', '<a href="#"><img src="/images/ad_banner02_s.gif"></a>', '<a href="#"><img src="/images/ad_banner03_s.gif"></a>' ]; function randWrite_s() { var rr = parseInt(Math.random() * randObjects.length); document.write(randObjects.slice(rr)[0]); randObjects.splice(rr,1); } //--> </SCRIPT> ▲▲▲▲▲▲▲▲▲▲▲▲meta内タグ▲▲▲▲▲▲▲▲▲▲▲▲ ▼▼▼▼▼▼▼▼▼▼▼▼body内タグ▼▼▼▼▼▼▼▼▼▼▼▼ <p><script type="text/javascript">randWrite();</script></p> <p><script type="text/javascript">randWrite_s();</script></p> ▲▲▲▲▲▲▲▲▲▲▲▲body内タグ▲▲▲▲▲▲▲▲▲▲▲▲

    • ベストアンサー
    • Java
  • リンクのスタイルをテキストと画像を別々にするには?

    リンクのスタイルの設定で詰まってしまい困っています。 テキストと下線部分にpaddingを入れたいため、text-decorationではなくborderで下線を設定しています。 このような場合、 画像のみborderを消し、テキストのみにborderを適応させることは可能でしょうか? <a href="#"><img src="hoge.gif"></a><a href="javaScript..." >テキスト</a>のように書けば簡単なのですが、挙動が望んでいたものと違ってしまうため、<a href="javaScript..."><img src="hoge.gif">テキスト</a>のままでお願いします。 (自分でjsが書ければ解決しそうな気もしますが…残念ながらjsは借りてきたものです) サンプルでもう少し詳しく説明しています。 http://imaichie.web.fc2.com/sample.html

    • ベストアンサー
    • HTML
  • jquery.mobile 画像を中央に表示

    <!DOCTYPE html> <html lang="ja"> <head> <title>test</title> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.css" /> <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.1.min.js"> </script> <script type="text/javascript" src="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.js"> </script> </head> <body> <div id="home" data-role="page" data-theme="d"> <ul data-role="listview" data-dividertheme="a"> <li data-role="list-divider">test </li> <li> <a href="#"> <img src="C:\1.jpg"> test </a> </li> <li> <a href="#"> <img src="C:\2.jpg"> test </a> </li> </ul> </div> </body> </html> ------------------------- 上記のようなコードで携帯サイトを構築しているのですが 正方形ではない画像が、右上に寄ってしまうのですが これを回避する方法はありますか? 例で言うのであれば 添付画像の黄色い四角を画像表示エリアの中央に表示させたいです。

    • ベストアンサー
    • HTML

専門家に質問してみよう