2012-11-30 10 views
7

jQueryを使用して要素にaria-autocomplete属性を設定しようとしています。しかし、IE10IE5 QuirksモードまたはIE7標準モードのいずれかで実行されているときは、Member not foundエラーが発生します。IE10のARIA属性

<input type="textbox" id="test" />​ 
$('#test').attr({"aria-autocomplete": "list"});​ 

デモはjsFiddleを参照してください。ここで定義されるように、私は他のさまざまなARIAを試してみました

属性:

HTML 5: The Markup Language (ARIA Edition)

は、いくつかは他の人にはない、同じエラーを生成します。

IE9でエラーを再現できません。

これはIE10のバグですか? jQuery?それとも私が理解していない他の理由がありますか?

+0

jQueryはquirksモードをサポートしていません。 IE10のIE7標準モードについてはわかりません。私はそれを調べなければならないでしょう。 –

答えて

11

POZは、

これは互換モードで知られているIE10ブラウザのバグときです。修正される可能性を高めるために、このバグチケットをアップしてください。 https://connect.microsoft.com/IE/feedback/details/774078チケットはjQueryチームによって提出されました。

実際のIE7でコードサンプルを試しましたか?私はbrowserstack(WinXP/IE7)でjsFiddleを試してみましたが、この例はエラーなく動作しました。

互換モードを使用してIE7のテストをシミュレートしている場合は、ネイティブIE7を使用するとうまく動作するというのが良いニュースです。 IE10互換モードにはバグがあります。

+0

感謝のエリヤ。私はバグをupvotedしました。私はIE7の開発ツールを使ってIE7をテストしたので、それでいいはずです。 –

+0

@Elijah_Manor - リンクが壊れています。私はそれをupvoteことができるように別のものを提供してもらえますか?ありがとう – johntrepreneur

+0

@johntrepreneur - リンクが壊れていません。それが見えない場合は、サイトに登録してIEフィードバックプログラムに参加する必要があります。 jQueryバグに関するコメントは、登録するだけでいいようです。 – BStruthers

0

これは私にとっての解決策でした。

// Use this for any attribute in IE6/7 
// This fixes almost every IE6/7 issue 
nodeHook = jQuery.valHooks.button = { 
    get: function(elem, name) { 
     var ret; 
     ret = elem.getAttributeNode(name); 
     return ret && (fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified) ? 
      ret.nodeValue : 
      undefined; 
    }, 
    set: function(elem, value, name) { 
     // Set the existing or create a new attribute node 
     var ret = elem.getAttributeNode(name); 
     if (!ret) { 
      ret = document.createAttribute(name); 
      elem.setAttributeNode(ret); 
     } 
     return (ret.nodeValue = value + ""); 
    } 
}; 

https://bugs.jquery.com/ticket/12577にAcoording、それはIE7モードでのIE10のcompabilityの問題があります:あなたは私のCASに、使用しているのjQueryのバージョンでは(jquery-1.7.2.js)は、このようなものですライン2764の周りつのセクションがあります。解決策は、set関数の戻り変数を変更することです。

return (ret.nodeValue = value + ""); 
//for: 
elem.setAttribute(name, value + ""); 
return (ret.value); 
関連する問題