HTMLのタグには、画像が表示されないときに表示される代替テキスト、alt
属性があります。img
と一緒にタグを使ってみiframe
ました。
<iframe src="www.abc.com" alt="Web site is not avaialable">
しかし、与えられたときに代替テキストは表示されませんsrc=""
。が与えられていない場合、他の方法で代替テキストを達成できるかどうかを知りたいだけsrc
ですか?
「最もクリーンな」解決策ではありませんが、別のオプションとして、CSS で位置と z-index を使用して、iframe
. これにより、複雑なスクリプトを作成する必要なく、真の代替テキストのすべてのメタデータの利点が得られます。
iframe
ロードが完了するまでプレースホルダーとして表示したい場合にも適しています。
<iframe>要素はalt属性をサポートしていませんが、longdescをサポートしています。それでも、HTML仕様は、ブラウザーが長い説明(または代替)テキストを処理する方法を指示していません。特定の動作を保証する唯一の方法は、JavaScriptを使用することです。jQueryを使用したテストされていない例を次に示します。
// Not tested
$('iframe').each(function() {
if ($(this).attr('href') == '') {
// Do something with $(this).attr('longdesc')
}
});
私の最初の試みはあなたの質問を誤解していたので、代わりにこれを試してみましょう:
<script>
$(function () {
$("iframe").not(":has([src])").each(function () {
var ifrm = this;
ifrm = (ifrm.contentWindow) ? ifrm.contentWindow : (ifrm.contentDocument.document) ? ifrm.contentDocument.document : ifrm.contentDocument;
ifrm.document.open();
ifrm.document.write($(this).attr("alt"));
ifrm.document.close();
});
});
</script>
これは、src 属性を持たない iframe または値が空白の src 属性のいずれかの iframe の「alt」タグ値を読み取り、その iframe の本文に代替テキストを書き込みます。
iframeからの404応答を簡単な方法でトラップする方法はわかりませんが、jQueryを使用してトラップすることはできます。
<iframe id="myFrame"></iframe>
<script>
$(function () {
$.ajax({
url: "http://www.abc.com",
success: function (data) {
$("#myFrame").html(data);
},
error: function () {
$("#myFrame").html("Web site is not avaialable");
}
});
</script>