5

互換モードが必要なフレームがありますが、親フレームがフレームを設定しているように見え、フレーム内の次のタグは何もしません。javascriptを使用してIE9を互換モードに強制する

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 

フレームのみに互換モードを適用するか、またはフレームを親フレームに互換モードにするかどうかを指定します。

モードを切り替えるためのjavascriptメソッドがあると思っていましたが、それを子フレームから親フレームに適用できました。

+0

残念ながら行うことはできません。 IEフレームでは、常に親ドキュメントのレンダリングモードを使用します。私はあなたが同じドメイン上にない親文書を変更することはできないので、クロスドメインの境界が親文書のレンダリングモードをフレームから変更できないようにすることを前提としています。 – pseudosavant

+0

私は同じドメインにいますが、これは数千ページの大きなレガシーアプリです。シバン全体に互換モードを設定するだけで、IE7のサポートが段階的に消え始めると、トラブルが発生する可能性があります。しかし、子供が親の文書を1ページで変更できるようにすれば、それはまさに私が望むものです。私の場合、クロスドメイン境界は問題ではありません。 – Serhiy

+0

iframeをopenで開くと、iframeはopener.set_XUA( "IE = EmulateIE7")のようなものを行うオープナーにアクセスできます。 これを行うには、iframeの名前をopenとして使用することができます。つまり、iframeを使用してページを開きます。 これは、それが値するよりもトラブルになる可能性があります。 – Tei

答えて

2

これは私が集めたものです。

動作するように思われるのは、メタタグの方法だけです。

しかし、IE9ではあるフレームが別のフレームと異なるタイプの機能を無効にしているため、フレームでは機能しないようです。

メタタグには、スクリプトやリンクタグ、前に他のメタタグを付けることはできません。それ以外の場合は同様に失敗します。

テストケース:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
    <head> 
     <title>Test test</title> 
     <meta name="keywords" content="keywords, keyword, keyword phrase, etc."> 
     <!--<link href="test.css" rel="stylesheet" type="text/css" />--> 
     <!--<script type="text/javascript">alert('test');</script>--> 
     <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 
    </head> 
    <body> 
     inline-block <div style="display:inline-block">test</div> 
    </body> 
</html> 
1

私の頭の上から、メタタグを作成してそれを親フレームの頭に挿入することができます。エミュレーションを強制するかどうかはわかりません。

var meta = document.createElement('meta'); 
meta.setAttribute('http-equiv', 'X-UA-Compatible'); 
meta.setAttribute('content', 'IE=EmulateIE7'); 

parent.document.getElementsByTagName('head')[0].appendChild(meta); 
+0

残念ながら、これは動作しません... :( – Serhiy

関連する問題