JS・AS共有ブログ -2ページ目

SafariでJSONPが文字化け

JSONPを使ったら、Safariだけ日本語が化けて困った!
オバケ
そういえばajaxでもSafariだけ文字化けたりしてました。
それはサーバサイドがヘッダ情報で文字コードをutf-8と指定してレスポンスを返せば直ったはず。

が、JSONPではサーバサイドがutf-8と指定してJSONPを返しても、utf-8として認識されない。

⇒scriptタグを作るときに、charset属性で文字コードを指定することで解決しましたねこへび

var head = document.getElementsByTagName("head")[0];
var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("charset", "utf-8");
script.src = "testJson.do";
head.appendChild(script);

こんな感じです。


IEでセレクトボックスがzIndexに関わらず一番手前にしゃしゃる問題について

CSSポップアップなどを出そうとする場合、
IE6では、セレクトボックスが何よりも手前に来てしまいます。

その対処として、前面に表示させたい要素と同じ大きさのiframeを作って、要素の下に敷く、という方法があります。
http://www.beasys.co.jp/dev2dev/pub/a/2005/4/portal_menus..html

が!
上記の方法ではsrc属性が無いダミーのiframeを作って対処していますが、
この方法をhttpsのページで使った場合、セキュリティ情報警告メッセージが表示されることがあります。
src属性が無いiframe がページに含まれている場合、そのiframeのsrc属性がセキュリティ保護されているかどうかを IEが判断できないためです。
この問題は、ダミーのhtmlを用意し、iframeのsrcをそのhtmlにむけることで解決できます。
http://support.microsoft.com/kb/261188/ja

というわけで、セレクトボックスがあってhttpsなページでCSSポップアップが必要な場合は、
ダミーhtmlを用意し、そこにsrcを向けたダミーiframeを用意し、それを要素の下に敷いてやらねばならないのです!!

すべてはIEのせい。
プンプン