IE, возможно, уже загрузил содержимое (и запустил событие), прежде чем добавить обработчик.Я обнаружил, что когда статически определял iframe src attr и добавлял обработчики событий $ (x) .load через jquery, firefox (3.6.28) запускал мои обработчики, но IE (8.0.6001.18702) этого не делал.
В итоге я настроил свою тестовую программу так, чтобы она добавляла iframe src через javascript после добавления обработчика $ (x) .load.Мой обработчик $ (x) .load вызывался в тех же точках в IE и Firefox (но обратите внимание, что обработчик, добавленный с помощью атрибута iframe onload, вел себя по-разному между IE и FF).Вот что я закончил:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<script type="text/javascript" src="jquery-ui/js/jquery-1.6.2.min.js"></script>
<script language="javascript">
function show_body(name, $iframe) {
$('.log').append(name+': '+$iframe.contents().find('body').html()+'<br/>');
}
function actuallyLoaded(name, x) {
$('.log').append(name+' actually loaded<br/>');
}
$(document).ready(function(){
$('.i1').load(function(){show_body('i1', $('.i1'));});
$('.i1').attr('src', 'eb_mce_iframe_content.html');
var $x=$('.i1').clone().removeClass('i1');
$('body').append($x);
$x.load(function(){show_body('x', $x);});
$x.attr('src', 'eb_mce_iframe_content.html');
});
</script>
</head>
<body>
<iframe class="i1" onload="actuallyLoaded($(this).attr('class')+'/'+$(this).attr('src'), this);">
</iframe>
<div class="log">
</div>
</body>
</html>
... и вот журнал Firefox:
i1 / eb_mce_iframe_content.html фактически загружен i1:
Фред лиса.
/ eb_mce_iframe_content.html фактически загружен х:
Фред лиса.