Я пытаюсь решить проблему для клиента, когда он хочет динамически внедрить изображение на страницу и заставить его вызывать функцию js при нажатии. Сценарий включен из нашего базового класса js на их сайт, так что это мой код на их сайте.
Я очень близок к тому, чтобы добраться туда, но я обнаружил странную проблему в IE всех мест, смеется.
Используя jQuery,
$('#sas-window-header').append("<img src='sandwich.jpg' id='gif' alt='Sandwich' />");
Это выдает ошибку в IE7,8
Object expected attachevent, line 42 character 20
(аттачевент - это имя моей страницы)
Я пытался написать свою функцию, используя vanilla js, но кажется, что между attachEvent()
и addEventListener()
слишком много проблем, чтобы сделать ее жизнеспособной, поэтому я использую jQuery, чтобы помочь мне.
Может кто-нибудь сказать мне, почему IE считает, что методы функции кросс-браузерных фреймворков должны ожидать объект?
Я получаю ожидаемое поведение в Firefox, Safari и Chrome. Два изображения в Opera почему-то и IE7,8 с этим объектом ошибки. Я приеду на ie6 позже! ;)
Вот что у меня есть,
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Attach event test page</title>
<script type="text/javascript">
window.onload = (function() {
if(typeof jQuery == 'undefined'){
var script = document.createElement("script");
script.src = "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js";
script.type = "text/javascript";
script.onload = script.onreadystatechange = function(){
injectImg();
};
document.body.appendChild( script );
}else{
injectImg();
}
});
function injectImg(){
$('#sas-window-header').append("<img src='sandwich.jpg' id='gif' alt='Sandwich' />");
$('#gif').click(function(){
alert('Clicked');
})
}
</script>
</head>
<body>
<p>The header</p>
<div id="sas-window-header"></div>
</body>
</html>