none
JavascriptでWindowを生成して開く際にDocumentモードを指定したい。 RRS feed

  • 質問

  • ブラウザはIE 9 (IE10,IE11では問題なし)で、
    開き元のドキュメントモードがInternet Explorer 5 Quirksの状態で、
    JavaScriptで別ウィンドウをDocumentモードを指定して開きたいです。

    例えば以下のようにWindow.open()を用いると動的に開きますが、
    Documentモードは、「Internet Explorer 5 Quirks」か「Internet Explorer 8標準」になります。

    win=window.open("");
    win.document.open();
    win.document.write("<!DOCTYPE ・・・"・)


    これをInternet Explorer のブラウザバージョンの標準で開きたいのですが、
    方法がわかる方いましたらご教授いただけますか。


    下記で質問していた内容でしたが、こちらの方が質問場所で適切だと思い移します。
    二重投稿のようになってしまい、申し訳ありません。

    http://answers.microsoft.com/ja-jp/ie/forum/ie9-windows_7/javascript%e3%81%a7window%e3%82%92%e7%94%9f/d2ef07f4-c80c-444b-8f35-ab0c064eee48



    2014年4月21日 1:01

すべての返信

  • この質問内容についてはコミュニティの「JavascriptでWindowを生成するとDocumentモードがIE8になる」で結論が出ている話ですね。

    その後の、回避策に対する動作が IE のバージョンによって異なる、という話が未解決だったと思うのですが、その点については質問内容に含まれないのでしょうか。このままでは単なる「迷惑なマルチポスト」になってしまいます。質問内容を再整理される事をお勧めします。


    hebikuzure


    2014年4月21日 4:15
    モデレータ
  • Window.open()では、ダメということはわかったのですが、
    それが結論だとは思ってませんでした。

    Window.open()に対しての質問に読み取れたので書き直しました。


    2014年4月21日 4:34
  • ウィンドウズスクリプトプログラマ様

    たびたび回答ありがとうございます。
    向こうのレス4で質問したのは、その通りやってみた結果、期待の動作にならなかったのを、まず理解頂きたいです。
    それを前提に読むと私の話が通じると思います。

    念のため、結果を詳細に記載します。
    こちらのIE9の環境で以下のとおり

    ソース。apache上においています。
    <html>
    <head>
    <meta http-equiv="X-UA-Compatible" content="IE=7">
    <script type="text/javascript">
     var w=window.open('about:blank');
    w.navigate('about:blank');
     w.document.write('aaa');
     w.document.close();
     alert(w.document.documentMode);
    </script>
    </head>
    </html>

    結果が下記です。
    画面を見たとおり、期待結果 = 「9」のところ、「5」と戻ります。
    画面は、Alertの出ている開き元になってるので、ドキュメントモードはIE7標準に見えますが、
    開き先のドキュメントモードは、Quirksとなっています。

    ※IE10の環境では期待通り「10」と出ます。IE8でも同様に失敗します。





    2014年4月21日 5:51
  • ちなみに元々の親ページを Edge モードにできない理由というのはなんでしょう。

    そうできれば色々と単純になると思うのですが....


    hebikuzure

    2014年4月21日 6:15
    モデレータ
  • hebikuzure様

    ありがとうございます。
    元ページをEdgeモードで開けない理由は、
    用意された器がクラウドのサービスだからです。
    こちらとしては、専用のソフトを用いて画面内のオブジェクトの配置と、
    JavaScriptの指定しかできないのです。

    (自分で作成したファイルを置くこともできません)


    2014年4月21日 6:25
  • ウィンドウズスクリプトプログラマ様

    スリープを入れてみた結果ですが、変化なしです。

    あと、他にIE9で検証してみたところ、
    開き元、開き先の、DOCTYPE、メタタグをいろいろ指定して実行すると

    document.openの場合、
    「開き元のDocumentモード」、「Quarks」、「Internet Explorer 8標準」

    navigateの場合、
    「Quarks」、「Internet Explorer 8標準」

    になるようです。

    2014年4月22日 0:40
  • 「用意された器がクラウドのサービス」というのが具体的にいま一つはっきりしないのですが、SaaS のようなサービスのアプリケーションが Internet Explorer 5 Quirks のページとして表示される、という事でしょうか。

    だとすればそのサービスもちょっと何だかなあ、という気もしますが、具体的にどこだか示せますか。


    hebikuzure

    2014年4月22日 1:55
    モデレータ
  • どうしても IE9 だけ挙動が異なる、という事であれば IE 側の不具合の可能性も考えられるので、クリティカルな問題であれば正式なサポートに相談される方が良いでしょう。場合によっては製品側で修正が行われて円満解決、というシナリオもあります。

    サポート案内 http://www.microsoft.com/ja-jp/services/support.aspx


    hebikuzure

    • 回答の候補に設定 星 睦美 2014年4月23日 0:30
    2014年4月22日 1:57
    モデレータ
  • hebikuzure様

    ご質問の通りSaasのサービスです。
    仰るとおり提供するサービスの画面自体がDocumentモード Quarksを指定しているため、
    Internet  Explorer 5 Quirksのページとして表示されます。

    その辺りもあり、かなりのイマイチ感が強いシステムです・・・。
    (ユーザーは気にしないかもしれませんけど。。。)

    サービス名は、出していいのかわからないため、伏せさせてください。

    サポートへの相談も検討します。
    (もしくは、サービス提供側に・・・)
    ありがとうございます。

    2014年4月22日 2:12
  • w.navigate('about:blank');

    すれば、そのieのデフォルトのドキュメントモードになりそうなものですが、どうなんでしょう。

    ie9でabout:blankを入れて開くと、ドキュメントモードはいろいろになりますか?

    手元にあるIE9の環境では、先に記載したとおり、この2つです。

    navigateの場合、
    「Quarks」、「Internet Explorer 8標準」
    開き先のDOCTYPE、メタタグの指定により切り替わります。

    開き先が「IE9標準」になるのは、開き元「IE9標準」でnavigateを使わず、開き先のDOCTYPEを指定したときです。

    2014年4月22日 7:06
  • ie9でアドレスバーにabout:blankを入れて開くと、ドキュメントモードはいろいろになりますか?

    Quarksになりました。
    2014年4月22日 7:30
  • FEATURE_BROWSER_EMULATION で iexplorer.exe に 9999、ですね。

    hebikuzure

    2014年4月22日 11:27
    モデレータ
  • FEATURE_BROWSER_EMULATION で iexplorer.exe に 9999

    現象は特にかわりませんでした。

    2014年4月23日 0:23
  • ie9は32/64bitの別があったのでは。32ならレジストリの場所が違う。64bitで試してみたら。

    32bit でも 64bitでも現象変わらずでした。
    2014年4月28日 2:03