2011-07-31 4 views
2

EDIT(私はJSをオフにブラウザの防弾をしたいのJavaScript/CSSの例を働いています)私は緑色で "刻まれた")。不足している画像の交換は

この単純な静的なHTMLページを見に行ってください。。。

これらの画像のいずれかが、著作権の対象となっている場合(これらは、私は疑問を説明するために、Googleのイメージ検索を使用した画像だけ謝罪している私はちょうど私はそれに取り組んでいます大規模プロジェクトの抜粋を使用して上記の例をコード化している

<html> 
<head><title>Server Test Using Image</title> 
<head> 
<body> 
If the server is alive, I will be a happy browser<br> 
<img src="http://getsetgames.com/wp-content/uploads/2009/12/ActivityIndicator.gif" id=spinner width=100 height=100> 
<img 
src="http://pwhatley.files.wordpress.com/2008/06/walmartfrown.jpg" 
width=100 height=100 
style="display: none;" 
id=linkBad 
> 
<img 
src="http://3.bp.blogspot.com/-vpsc13PCfc0/TaLCGaq2SjI/AAAAAAAACTA/hw2MDzTk6mg/s1600/smiley-face.jpg" style="display: none;" width=100 height=100 
onError="document.getElementById('linkBad').style.display='inline'; document.getElementById('spinner').style.display='none';" 
onLoad="this.style.display='inline'; document.getElementById('linkBad').style.display='none'; document.getElementById('spinner').style.display='none';" 
> 
</body> 
</html> 

ライブサーバー上で必要な画像が...)サーバの数のオンライン状態を評価します。このコンテンツは動的に生成されますが、この例では、ブラウザによって読み込まれる静的なページと見なすことができます。 (つまり、サーバのバックエンドでこれらの作業を行う方法がないと仮定します。サイトの目的は、その場所からどのサーバに到達できるかを視聴者に知らせることです)

これをhtmlページに貼り付けると、アクティビティインジケータが短く表示され、笑顔が表示されます。

2つ目のimgオブジェクトのsrcタグを編集して別のドメイン名にするか、死んでいることがわかっているIPアドレスに移動すると、最終的にアクティビティインジケータが停止し、擬似顔に置き換えられます。

注 - この例では、ファイル名の編集は機能しません。サーバーを提供するサーバーは最終パスコンポーネントを無視するため、サーバーを編集して127.0.0.9などの悪いドメイン名を指すようにしてください

アクティビティインジケータは素敵ですが、おそらくjavascriptでのみ使用できます。これは、2番目の画像のonLoadまたはonErrorの実行に依存しているためです。だから無視してください - 私はちょうど動的にスクリプトタグを使用して活動インジケータを挿入します。この例をシンプルにするために、表示される唯一のスクリプトはonLoadタグとOnErrorタグです。

私はこの結果をHTMLのみで達成する方法をいくつか考えています。つまり、JavaScriptがオフになっている場合は、画像を置き換える代替方法があります。すなわち、それはそれにリンクされているHTMLページと同じサーバー上にあるので、眉をひそめる画像が安全だろうと仮定します。)

後、私は私がチェックされている回答に基づいて作成したソリューションです。 base64のデータのURLの意志の仕事を使用して

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<title>Untitled Document</title> 
<style type="text/css"> 
<!-- 
.serviceFails { 
background-image: url('http://img185.imageshack.us/img185/1800/080508215859259007ge8.jpg'); 
} 
.service1 { 
background-image: url('http://img204.imageshack.us/img204/3783/080508190940132007ve6.jpg'); 
} 
.service2 { 
background-image: url('http://img206.imageshack.us/img206/2967/080508153147264007sp6.jpg'); 
} 
/* ... */ 
--> 
</style> 
</head> 
<body> 
<table><tr><td>Service 1</td><td> 
<div class="serviceFails"> 
<div class="service1"><image src="http://www.stuartrobertson.co.uk/images/transparent.gif" width=100 height=100></div> 
</div> 
</td></tr></table> 
<br>  
<table><tr><td>Service 2</td><td> 
<div class="serviceFails"> 
<div class="service2"><image src="http://www.stuartrobertson.co.uk/images/transparent.gif" width=100 height=100></div> 
</div> 
</td></tr></table>  

</body> 
</html> 
+0

ノート画像アイコン(MSIEで赤いX)をロードできませんでしたtransparent.gifファイルが読み込まれない場合そのため、私のCSSでは、サーバが稼働しているかどうかテストするためにバックグラウンドイメージプロパティを使用していました。ブラウザが失敗した場合、ブラウザはCSS仕様に従ってバックグラウンドイメージルールを無視する必要があります。私の知る限り。 – user268396

+0

フェアコメント。これは私が使用する解決策の一例に過ぎません。実際には、htmlが提供されているのと同じサーバーから透過的で失敗するイメージを提供します。 – unsynchronized

+0

imgのエラー構文を私の注意を引くための完全なマーク:これにより、私は非常に簡潔な解決策を実際に書くことができました。 (これにはJSを有効にする必要があります) –

答えて

2

たぶん、背景画像の策略。あなたがCSSを有効にしている場合、少なくともBase64でエンコードされたデータによってCSSで定義された背景イメージがアイテムに存在する可能性があり、ユーザーがイメージをヒットできる(つまり、サービスがオンラインである)場合、サーバーから返されたイメージでオーバーレイされます。

CSSで定義された背景画像は、サービスがオンラインの場合は非表示になり、非表示の場合は非表示になります。

<div class="status_test"> 
    <div id="service1Overlay"></div> 
</div> 

とCSSで:これは大体そうのように行われるべきであることに注意してくださいあなたの現在のソリューションで、ブラウザが重ね合わ可能性があることを

#service1Overlay { background-image: url('http://myservice.com/statuspic.png'); } 
.status_test { background-image: url('<base64-data-url-goes-here>'); } 
+0

歓声。それは私を正しい道に導くのに十分だった。他の誰かがそれから借りたがっている場合に備えて、私は質問の最後に何をしたのかを投稿します。 – unsynchronized

+0

btw?base64のポイントは何ですか? – unsynchronized

+1

私はいくつかのサーバーからCDNのようなものを取りました。したがって、CSSはイメージとは異なるサーバーから配信される可能性があります。このシナリオでのbase64のポイントは、画像*をCSSでエンコードできることです。ブラウザはbase64をデコードし、それを生の画像として使用します。したがって、失敗アイコンを処理しているサーバーが失敗して失敗アイコンがロードされないトラップを回避できます。 – user268396