私たちのアプリケーションでは、$( 'div')。append(obj.clone())。html()アプローチを使用してオブジェクトの外側HTMLを取得しています。私たちは基本的に、オブジェクトのhtmlを取得し、htmlで正規表現置換(主にIDやその他の属性を置き換える)を行います。これらのオブジェクトはINPUT型であり、その値はユーザーによって変更されている可能性があります。私たちがIE9標準モードで試してみるまで、うまくいきました。このモードの何らかの理由で、オブジェクトの外側のHTMLを取得しても、HTMLに更新された値が得られないようです。これを実証するには、小さなプログラムがあります。まず、IE8の標準でそれを実行してみてください。次に値を更新すると、次にprint htmlが更新された値を表示します。しかし、もしあなたがIE9モード(標準)にswithcすれば、値が変更された後でさえHTMLを出力するときに元の値を表示します。 doStuffとdoStuff2の2つの関数があり、どちらも同じ結果を持っています。私はちょうどそれがクローン()の問題であるかどうかを確認するために両方をしましたが、そうではないようです。ここでは、POCコードは(S)JQuery "outer HTML" IE9標準ビューで変更された値を表示しない
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script src="jquery-1.6.4.js" type="text/javascript" charset="utf-8"></script>
</head>
<script type="text/javascript">
$(document).ready(doStuff2);
function doStuff()
{
alert($('#testinput').val());
alert(($('').append($('#testinput').clone())).html());
$('#testinput').val('newValue');
alert($('#testinput').val());
alert(($('').append($('#testinput').clone())).html());
}
function doStuff2()
{
alert($('#testinput').val());
alert(($('#one').append($('#testinput'))).html());
$('#testinput').val('newValue');
alert($('#testinput').val());
alert(($('#two').append($('#testinput'))).html());
}
</script>
</head>
<body>
<input type="text" id='testinput' value="test">
<div id='one'/>
<div id='two'/>
</body>
</html>
おかげ
IE9 strictにはフォーム要素に関する問題があります。これを見てください:http://stackoverflow.com/questions/3097219 –