ところが、FireFoxでは何ら問題ないのだが、Internet Explorerでユニコードを使うといろいろ問題が発生する。
そこで、ShiftJISで書いたHTML内にインラインフレームを配置して、そこにユニコードで書いたGoogle Maps APIを書いたHTMLをリンクさせる。
ところが、FireFoxやIE6ではしっかり表示されているGoogleMapがIE7でだけ表示されないというトラブルが発生した。
とりあえず、親HTMLをユニコードにしてみる。ところがこれだとIE6で表示されない。
そこでネットで検索して調べてみると。
□インラインフレームの中身が表示されない - XREA&CORE SUPPORT BOARD
原因は特定されていなかったように思います・・・なんていう記事を見つけた。
IFRAMEで呼び出される側のソースの方の問題だとは思いますが・・・
以前スタイルシートを使っていないもので
<META http-equiv="Content-Style-Type" content="text/css">
↑コレを宣言していたらダメだったというケースがあったように思いますが・・・
メタタグをとったらうまくいったというのがあったような気がします
いろいろ修正していたら、そのうちに直ったとか・・・
そこで、呼び出される側のHTML内のMETAタグまわりをいろいろ調べてみるとなんとか解決。
□表示されなかったコード
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>すったもんだのインラインフレーム</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="cssjs/default.css" rel="stylesheet" type="text/css" />
<script src="http://maps.google.com/maps?file=api&v=2&key=xxxxx"
type="text/javascript"></script>
</head>
□表示されたコード
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>すったもんだのインラインフレーム</title>
<link href="cssjs/default.css" rel="stylesheet" type="text/css" />
<script src="http://maps.google.com/maps?file=api&v=2&key=xxxx"
type="text/javascript"></script>
</head>
よく見てみると文字コードを宣言しているMETAタグがTITLEタグの後にあったときに表示されていないことがわかる。
つまり、回避策はなるべく文字コードを宣言するためのMETAタグは上のほうに置くということ。
できれば最上位(先頭)に置いたほうがいいと思う。
ついでにいろいろ調べてみるとやはり文字コードを指定するMETAタグはヘッダーの一番先頭に配置するのがいいらしい。
少なくともtitleタグよりは前に配置しましょう。
□文字コード宣言は行いましょう(HTML) - Web標準普及プロジェクト
□HTMLタグ/ページ全般タグ/文字コードの指定 - TAG index
しかし、どんな設定でもしっかり表示されたFireFoxはやっぱりすごいです。