現在、サイトを作っているのですが。
スライドショーのjsファイルがIE9で上手く動きません。
(他のIEやブラウザはすべて大丈夫でした)
メタに<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
を記入することで、IE9でも動くようになったものの
最終的にメタ部分を触る事ができない、ASPサービスへ組み込みをします。
このため、javascriptの方で制御できないか?と考えました。
IE9でサイトが表示されたときに、互換モードになるような設定はできないでしょうか?
微妙なんですがこのリンクのHTTP レスポンス ヘッダーは使えないですか?
http://www.softel.co.jp/blogs/tech/archives/2706
http://www.atmarkit.co.jp/fdotnet/special/ie9review01/ie9review01_01.html
レンタルカートのサービスって、iframe の中で動かしたりすることは可能ですか?
http://msdn.microsoft.com/en-us/library/gg558056%28v=VS.85%29.aspx
http://msdn.microsoft.com/en-us/library/ff955402%28v=vs.85%29.aspx
iframe を表示するときに、それのフレームを抱えている親のページが IE9 モードで描画されていないなら、フレームの中身は(meta タグなどで、モードに何が指定されていても)親のフレームと同じモードで描画される、とのこと。
こんなページを仮に作って、そこのフレームの中で動作させると、ページやレスポンスヘッダをいじらなくても、下位のモードで動作すると思います。
<html> <head> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> <style> IFRAME { /* body 目いっぱいに広げる */ width: 100%; height: 100%; border: none; } </style> </head> <body> <iframe src="カートのサービスの URL"></iframe> </body>
通常、この手の処理はクライアントではなくてサーバー側(ASP)で行うものだと思うのですが、何故それではダメなのでしょうか?
e.g.
Page.Header.Controls.AddAt(0, new HtmlMeta { HttpEquiv="X-UA-Compatible", Content="IE=EmulateIE7" });
ASPがダメなら、web.configで設定してしまうのもやはりダメでしょうか・・・?
i.e.
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="X-UA-Compatible" />
<add name="X-UA-Compatible" value="IE=EmulateIE7" />
</customHeaders>
</httpProtocol>
</system.webServer>
やはりJSだけでは書き換えはできないのですね!
ヘッダーに手を加えることができないレンタルカートのサービスを使っており
本来であればMETAタグ、HTTPレスポンスヘッダー、DOCTYPE宣言で対応できるのですが、、
これらに書き込みができないため、外部からjsを読みこむ方法で対処できないかと考えての質問でした。
IE9でエラーを起こしている原因自体の方を直すことにします。
ご回答ありがとうございました。