我正在尝试A / B测试我们的产品下拉视图。下面是我正在使用的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和&amp ;; 8
我该如何解决这个问题?
答案 0 :(得分:0)
我能够解决问题。为了将来的参考,我会发布一些代码并解释。 违规代码如下所示:
<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;
}
答案 1 :(得分:-2)
href不是window的属性,它可以与anchor()对象一起使用,尝试只使用window.location,这应该可行。