- PR -

iframeの表示

投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2008-11-26 22:02
こんにちは。

Struts2を使ったWEBアプリを作成しているのですが、IE6の挙動がうまくいきません。
ボタンを押下したら、iframeのデータがPOSTし、JavaのAction内処理が行われ、メッセージをセットします。

そのメッセージは
<div style="color: #FFFFF">完了しました</div>
のように受けわたりiframeに処理結果として表示されるイメージです。

ただ、FireFox3 & safari & Chorome0.3では出力されるのですが、IE6では処理は正常に完了しているのですが、完了メッセージが表示されません。

ここで紹介されている内容を見るとIE6のiframe自体の構造がhtmlから外れているようなのですが、それが影響しているのでしょうか?
http://allabout.co.jp/internet/javascript/closeup/CU20060115A/index.htm

IE6 & IE7でも出力されるようにしたいのですが・・。お分かりになりましたらよろしくお願いします。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-11-26 22:41
iframeに表示されるものは極端な話、全く別ドキュメントです。
iframeだから表示されないのか、
targetを_blank等にしても表示されないのか、どちらでしょう?

表示されなかった領域はどうなってますか?
右クリックして、プロパティやHTMLのソースを見るのも参考になるかと思います。
文字コードの解釈の問題で、出力されているけど、
表示はされていないということもあります。
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2008-11-26 23:08
ありがとうございます。

おっしゃるように、右クリックででソースの表示と見ると確かにセットされてますね・・。
表示はされず認識していない感じです・・。ためしに<html><body>タグをメッセージに囲ってみましたが、同じでした・・。metaタグで文字コードを指定しても表示はされません・・。

<iframe name="frame1" id="frame1" style="height: 50px; margin: 0 0; filter: alpha(opacity=0); " frameborder="no" scrolling="no"></iframe>
何か邪魔しているのでしょうか?
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2008-11-26 23:50
filter: alpha(opacity=0);

これ。

背景を透過させるのは、allowtransparency = true だよ。
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2008-11-27 00:42
ありがとうございます。

おっしゃるとおりでした!表示されました。
私も初めこれにして透過を試してみたのですが、IE6では反映されませんでした。
そこで、調べた所alphaのCSSに辿り着きました。

実際は透過の必要がなく、background-color: #FFFFFF;がiframeのstyleで効かない為、透過の手法を取りました。

ん〜・・。ブラウザを判定してソースを変えるのも、あまり好きではないのですが、仕方ないですかね。。ありがとうございます。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-11-27 00:45
filter:alpha(opacity=0)

これは半透明フィルタで、不透明=0としているためです。
ではなぜ他のブラウザなら表示されたかというと、
単にIE専用のスタイルだからです。
firefoxなら-moz-opacityなど、ブラウザによってばらばらな実装です。

どういう意図で書いたかは存じませんが、
単にIE以外のブラウザでは無視されているだけですね。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-11-27 00:48
引用:

実際は透過の必要がなく、background-color: #FFFFFF;がiframeのstyleで効かない為、透過の手法を取りました。


背景を白にしたいなら、iframeではなく、
iframeの中のHTMLに設定しましょう。
iframeは枠を作るのが目的で、iframeの中の見た目は、
中のドキュメントの担当です。
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2008-11-28 01:39
ありがとうございます。

これもIE6だけなのですが、iframeの戻り値に対して背景色等をセットすると初期表示時空白状態です。中身を見ると<html></html>なので、セットしなければいけないのですが。

innerHTMLでセットする時は、
if (document.all) {
iframedoc = iframe.contentWindow.document;
} else {
iframedoc = iframe.contentDocument;
}
iframedoc.writeln("<body></body>");
iframedoc.body.innerHTML = "Inline Frame";
のようにセットしなければいけないようです。

あまり煩雑なソースにしたくないのですが、簡易な方法はありませんでしょうか?
<iframe ..><html><body bgcolor="#000000"></body></html></iframe>はだめでした・・。

スキルアップ/キャリアアップ(JOB@IT)