none
IE11になってデータバインドが使えない原因は? RRS feed

  • 質問

  • IE,HTMLを使いデータバインドを利用して,郵便番号検索等のデータ検索プログラムを作り,10年以上にわたる期間,ホームページで多く方に利用されてきましたが,最近自動的にIE11にバージョンアップされてから,これが全く機能しなくなり,表示されるべきデータが表示されません。知人のパソコンでも,IE11で同様の現象が確認されました。

    マイクロソフト社のサポートセンターにも問い合わせをし,いろいろテストをしていただきましたが,結局,IE11では機能しないことが確認されたものの,原因と解決策はよく分からず,最後は遠隔操作でIE11からIE10にバージョンをダウンしてもらい,元通り,機能する状態に戻りました。

    ネットで調べたところ,以前にデータバインドとIEの脆弱性を指摘したページもあったように思いますが,IEでしか使えないデータバインドは,いよいよIE11から機能停止(廃止)となったということがあるのでしょうか。廃止ではなく,なにがしかの不具合があるとか,あるいは特別設定を変更する必要があるとか,機能しない理由があるのでしょうか。

    2014年1月15日 11:39

回答

  • ん?
     
    IE11の削除された API 機能の一つにデータバインドが含まれているようです。
    http://msdn.microsoft.com/ja-jp/library/ie/bg182625(v=vs.85).aspx
     
    # 最新の標準に合わせるためだとか
    2014年1月15日 12:56
  • レガシーな IE 独自拡張を手っ取り早く、IE11 でも対応させたい、というのであれば、ドキュメントモードを旧 IE 向けとして認識させればよいかもしれません。

    <meta http-equiv=“X-UA-Compatible” content=“IE=7” />

    を head タグ内に挿入すれば、IE 11 は IE 7 相当のエンジンを利用し、ページを表示します。

    一方で、IE8 以降、IE の独自拡張は廃止される傾向にあります。そのため、上記の方法はその場しのぎにしかなりません。
    しかし、現在の IE では代わりに、HTML5 などの標準技術を利用することができます。

    データバインドについては、HTML5 のカスタムデータ属性を代用できるかと思います。

    manamode が作成したコードのメンテナンスの必要が出てしまいますが、標準技術であるカスタムデータ属性を採用してみるのはいかがでしょうか。

    使用例は以下の通りで、data-任意のプロパティ名="値"のように利用することができます。

    <div id="div1" data-myData="myState"></div>

    標準技術ですのでこれでしたら、IE 8, 9, 10, 11 それ以降はもちろん、Firefox や Chrome 等のブラウザーでも動作します。カスタムデータ属性については、HTML5 の新しい技術ですが、一応 IE6 や 7 でも動作するかと思います。

    また、jQuery を利用している場合以下のようにデータを取り出すことができます。

    alert( $( "#div1" ).attr( "data-myData" ) );

    また、付与することもできます。

    $( "#div1" ).attr( "data-myData", "state2" );

    もちろん、jQuery を利用せず、標準の DOM API で属性値の取得、変更も可能です。

    2014年1月15日 14:41

すべての返信

  • document modeをie10以下に変えてみては。

    手元のHTAでは同様に使えてますから、document modeの問題では。

    手元のHTAをhtmに変えて、document modeを7 8に変えると動きました。9 10は具合がよくないみたい。 
    2014年1月15日 12:52
  • ん?
     
    IE11の削除された API 機能の一つにデータバインドが含まれているようです。
    http://msdn.microsoft.com/ja-jp/library/ie/bg182625(v=vs.85).aspx
     
    # 最新の標準に合わせるためだとか
    2014年1月15日 12:56
  • レガシーな IE 独自拡張を手っ取り早く、IE11 でも対応させたい、というのであれば、ドキュメントモードを旧 IE 向けとして認識させればよいかもしれません。

    <meta http-equiv=“X-UA-Compatible” content=“IE=7” />

    を head タグ内に挿入すれば、IE 11 は IE 7 相当のエンジンを利用し、ページを表示します。

    一方で、IE8 以降、IE の独自拡張は廃止される傾向にあります。そのため、上記の方法はその場しのぎにしかなりません。
    しかし、現在の IE では代わりに、HTML5 などの標準技術を利用することができます。

    データバインドについては、HTML5 のカスタムデータ属性を代用できるかと思います。

    manamode が作成したコードのメンテナンスの必要が出てしまいますが、標準技術であるカスタムデータ属性を採用してみるのはいかがでしょうか。

    使用例は以下の通りで、data-任意のプロパティ名="値"のように利用することができます。

    <div id="div1" data-myData="myState"></div>

    標準技術ですのでこれでしたら、IE 8, 9, 10, 11 それ以降はもちろん、Firefox や Chrome 等のブラウザーでも動作します。カスタムデータ属性については、HTML5 の新しい技術ですが、一応 IE6 や 7 でも動作するかと思います。

    また、jQuery を利用している場合以下のようにデータを取り出すことができます。

    alert( $( "#div1" ).attr( "data-myData" ) );

    また、付与することもできます。

    $( "#div1" ).attr( "data-myData", "state2" );

    もちろん、jQuery を利用せず、標準の DOM API で属性値の取得、変更も可能です。

    2014年1月15日 14:41
  • データバインドについては、HTML5 のカスタムデータ属性を代用できるかと思います。
     
    IEのデータバインドはもう少し大きな仕組みのようですよ。HTML5で代用するにしてももう少し各種機能を連携させる必要がありそうです。
    http://msdn.microsoft.com/ja-jp/library/cc392323.aspx
    #私自身は利用したことはありませんが。。

    • 回答の候補に設定 David Kuo 2014年1月16日 14:32
    2014年1月16日 11:16