На веб-странице веб-приложения отображалась странная ошибка. Я регрессивно удалил весь код HTML / CSS / JS и пришел к простому и простому коду ниже.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<title>test</title>
<script type="text/javascript">
var TestObj =
{
foo: function() {}
}
alert(x); //ok displays "undefined"
var x = TestObj.foo;
var z = TestObj.foo;
</script>
</head><body>
<p onclick='alert(x);'>Click shows function foo!</p>
<img onclick='alert(x);' alt='CRAZY click displays a number in FF/Safari not function foo' src='' style='display: block; width: 100px; height: 100px; border: 1px solid #00ff00;'>
<p onclick='alert(x);'>Click shows function foo!</p>
</body></html>
Это безумие: при нажатии на элементы P строка «function () {}» выводится, как и ожидалось. Но при нажатии на элемент IMG показывает число, как если бы функция x каким-то образом была удалена из памяти или деинстантирована (она даже не показывает x как «неопределенное», а как число).
Чтобы вы могли проверить это быстро, я поместил рабочий тест выше также здесь .
Это можно воспроизвести как на Firefox 3.6, так и на Safari 4.0.4 .
Все работает правильно только в IE7 + .
Я действительно не знаю, мне было интересно, является ли x зарезервированным ключевым словом в JS Firefox / Safari. Спасибо всем, кто мог помочь!
К вашему сведению:
- если вы отмените x () на z ()
все отлично работает во всех
браузеры (это еще более безумно
меня)
- добавление реального изображения в src
атрибут не решает проблему
- удаление стиля в img не исправляет
проблема (я придал стиль изображению
только чтобы помочь вам, нажав на изображение
Таким образом, вы можете увидеть границу изображения)