Javascript редирект, приводящий к тому, что IE 'null' является нулевым или не является ошибкой объекта - PullRequest
0 голосов
/ 12 ноября 2010

Я пытаюсь провести А / Б тестирование нашего продукта. ниже приведен код JavaScript, который я использую:

  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.location = url;
    }

После перенаправления страницы в IE я получаю страшные 'null' is null or not an object и Object does not support this property or method ошибки.

Это происходит как в IE 7, так и в 8

.

Как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 12 ноября 2010

Мне удалось решить проблему. и для дальнейшего использования я выложу код и объясню. Оскорбительный код выглядит так:

<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;
    }
0 голосов
/ 12 ноября 2010

href не является свойством окна, его можно использовать с объектом anchor (), попробуйте использовать только window.location, и это должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...