プロが教える店舗&オフィスのセキュリティ対策術

html上の画像にリンクが張ってあり、もしそのリンク先が存在しない場合、画像をリンクボタンではなくただの画像に戻すことは可能なのでしょうか?
かなり困っています・・・宜しくお願いします。

A 回答 (5件)

乱暴なやりかただけど



1.とりあえず自サイト側でリンク用画像表示
2.リンク先の画像を読み込む(直リンになるので要注意)
3.2で読み込めてるようならリンクを付ける

----------
<a id="link_01"><img src="link_01.jpg"></a>
----------
こんな状態にして普通に表示させて後からidを頼りにaのhrefを変化させる(DOM操作)

この回答への補足

ご回答ありがとうございます。
追記なのですがリンク先が存在するかしないかを判別させてid"link_01"を変更するにはどうしたらいいんでしょうか?
質問の仕方が乱雑ですみません。

補足日時:2006/11/16 13:21
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2006/11/17 13:45

>追記なのですがリンク先が存在するかしないかを判別させて



リンク先のページが存在するかを知るためには、実際にリンク先URLにリクエストを送り、その応答を調べなければなりません。

JavaScriptからリクエストを投げるには、Ajaxで使われるXMLHttpRequestなどを用います。ただし、セキュリティ上の制約から、リンク元(JavaScriptを記述するページ)と違うドメインのURLには、リクエストを投げられません。

CGIなどサーバサイドでリンク先が存在するかを確認する場合には、ドメインの制約はありません。

ただし、サーバサイドにしろ、JavaScriptでやるにしろ、余計な処理(リンク先の存在を確認するために、いちいちリンク先にリクエストを送る)が増えるため、このようなことを実際に行なっているサイトは殆どないと思います。

この回答への補足

今回、製作会社に頼まなくてもとりあえずリンク切はしないというのがコンセプトですのでちょっと予想外の展開ではありますね・・・
----------------------------------------------
<script language="javascript">
<!--
function getPage(pageURL) {
xmlhttp = createXMLHttp();
if (xmlhttp)
{
xmlhttp.onreadystatechange = setPageData;
xmlhttp.open('GET', pageURL);
xmlhttp.send(null);
}else{
alert("");
}
}
function setPageData()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
document.getElementById("disp").innerHTML = xmlhttp.responseText;
}
}
// XMLHttpsオブジェクト作成
function createXMLHttp()
{
try {
return new ActiveXObject ("Microsoft.XMLHTTP");
}catch(e){
try {
return new XMLHttpRequest();
}catch(e) {
return null;
}
}
return null;
}
// -->
</script>
-----------------------------------------------------------
一応教えていただいたことでここまでは作成できたのですが
javaの初心者であるためリンク先を別ウィンドで開くという動作がどうすればいいのかわかりません・・・
度々の質問で申し訳ないのですが、宜しくお願いします。

補足日時:2006/11/16 21:22
    • good
    • 0
この回答へのお礼

かなり参考になりました!ありがとうございました。

お礼日時:2006/11/17 13:44

>変更するにはどうしたら


document.getElementById("link_01").href = "http://目的のURL" ;
    • good
    • 0
この回答へのお礼

できました!ありがとうございました。

お礼日時:2006/11/17 13:43

とりあえず、サンプルです。



<html>
<head>
<script language="javascript">
<!--
var linkURL = '●リンク先のURL●';
var imageURL = 'http://oshiete1.goo.ne.jp/images_goo/goo.gif';

function onloadFunc() {
document.getElementById("hoge").innerHTML = "<img src='"+imageURL+"'>";
getPage(linkURL);
}

function changeImageLink()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
document.getElementById("hoge").innerHTML = "<a target='_blank' href='"+linkURL+"'><img src='"+imageURL+"'></a>";
}
}

function getPage(pageURL) {
xmlhttp = createXMLHttp();
if (xmlhttp)
{
xmlhttp.onreadystatechange = changeImageLink;
xmlhttp.open('GET', pageURL);
xmlhttp.send(null);
}else{
alert("");
}
}

function createXMLHttp()
{
try {
return new ActiveXObject ("Microsoft.XMLHTTP");
}catch(e){
try {
return new XMLHttpRequest();
}catch(e){
return null;
}
}
return null;
}
// -->
</script>
</head>
<body onload="onloadFunc();">
<div id="hoge"></div>
</body>
</html>

●リンク先のURL●のところに、リンク先のURLを入れて下さい。
リンク先が実際に存在するかによって、リンクされたり、されなかったりします。
ANo.2に書きましたが、リンク先URLは、リンク元のURLと同一ドメインでなければ機能しません(絶対に)。つまり外部のサイトへのリンクでは、この方法は使えません。

なお、サンプルはかなり適当に書いてますので、きちんとやるのならば、プロの方(製作会社の方)に相談された方がよいと思います。

この回答への補足

ご回答ありがとうございます。
これは一つのリンクに対してのスクリプトですが、もし複数のリンクを一括にコントロールする場合どうすればいいのでしょうか?

補足日時:2006/11/17 19:57
    • good
    • 0

>複数のリンクを一括




<head>
<!-- 省略 -->
<script><!--
l_data=[
 ["おーけーうえーぶ","http://internet.okwave.jp/"],
 ["ぐーぐる","http://www.google.co.jp/"]
];
//---------------
function link_on(){
for(i = 0 ; i < l_data.length ; i++){
 if(ちゃんとlinkチェック自分で作ってね){
  document.getElementById("link_"+i).href = l_data[i][1] ;
 }
}
//--></script>
</head>
<body onload="link_on()">
<div>
<script><!--
//---------------
for(i = 0 ; i < l_data.length ; i++){
document.write("<a id=\"link_"+i+"\">"+l_data[i][0]+"</a><br>");
}
//--></scirpt>
</div>
</body>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!