В нашем приложении мы получаем внешний html объекта, используя подход $ ('div'). Append (obj.clone ()). Html (). Мы в основном клонируем объект, получаем html объекта и затем выполняем некоторую замену регулярного выражения в html (главным образом для замены идентификатора и некоторых других атрибутов). Эти объекты имеют тип INPUT, и их значение может быть изменено пользователем. Все работало нормально, пока мы не попробовали его в режиме стандартов IE9. По какой-то причине в этом режиме захват внешнего HTML-объекта, похоже, не получает обновленное значение в HTML. Чтобы продемонстрировать это, вот небольшая программа - попробуйте сначала запустить ее в стандартах IE8, и вы увидите, что она обновляет значение, а затем при следующем вызове print html отобразится обновленное значение. НО ... если вы переходите в режим IE9 (стандарты), тогда он выводит исходное значение при распечатке HTML, даже после того, как значение было изменено. Есть две функции - doStuff и doStuff2 - они обе имеют одинаковые результаты. Я просто сделал и то, и другое, чтобы понять, может ли это быть проблемой с clone (), но, похоже, это не так. Вот код POC:
<!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>
Спасибо