Мне удалось решить проблему. и для дальнейшего использования я выложу код и объясню.
Оскорбительный код выглядит так:
<script type="text/javascript">
window.addEvent('domready', function(){
$('v_toggle').addEvents({
'mouseenter': function(e){
$('vertical_slide_container').show();
},
'mouseleave': function(e){
$('vertical_slide_container').hide();
}
});
});
</script>
</head>
<body>
<div class="mboxDefault">/div>
<script type="text/javascript">mboxCreate('header',etc...);</script>
Моя компания использует Omniture для нашего A / B-тестирования, и мой код выполнялся в функции mboxCreate()
. Вы заметите выше, что есть код, добавляющий событие domready
, которое добавляет события наведения к нашему навигационному сайту (что, кстати, ниже моего кода mboxCreate()
). Происходило то, что мой код перенаправлял, что останавливало загрузку страницы, что также сигнализировало о готовности DOM. Поэтому, когда я вызвал перенаправление, код готовности DOM был запущен и пытался добавить события наведения на несуществующие элементы DOM.
Таким образом, ошибки 'null' is null or not an object'
и object does not support this method or property
.
Решением проблемы было удаление всех событий domready
перед перенаправлением, чтобы мой код без ошибок выглядел так:
var url = window.location.href,
defaultType = 'Gallery',
otherType = 'List';
if(Cookie.read('SEARCHVIEW') == otherType && Cookie.read('viewTypeChanged') != otherType){
if(url.contains('v='+otherType)){
url = url.replace('v='+otherType, 'v='+defaultType);
}else if(url.contains('?')){
url = url + '&v='+defaultType;
}else{
url = url + '?v='+defaultType;
}
window.removeEvents('domready');
window.location = url;
}