2013-05-17 58 views
0

我在Web应用程序中实现书签功能。在FF中工作正常(Chrome不支持它),但它在IE8中引发错误,甚至在IE9 & IE10中不起作用。IE8打破如果:对象不支持此属性或方法

这是代码(这是一个点击处理函数里面,所以相当平直向前):

if(window.sidebar) { 
    window.sidebar.addPanel("EXOP - GRD", $(this).data('href'), ""); 
} else if(window.external && window.external.AddFavorite) { 
    window.external.AddFavorite($(this).data('href'), "EXOP - GRD"); 
} else if(window.opera) { 
    $(this).attr({ 
     href:$(this).data('href'), 
     title:"EXOP - GRD", 
     rel:"sidebar" 
    }) 
} else { 
    console.log("Bookmark Action not supported"); 
    return false; 
} 

但IE8上线3指点突破到if与错误Object doesnt support This Property or Method。什么???

此外,这东西应该在IE9工作& 10,不应该吗?

任何帮助将非常感激。

回答

1

它不适用于Firefox以外的浏览器,因为它是Firefox特有的。

Mozilla documentationwindow.sidebar

规范 - “Mozilla的特定不任何标准的一部分。”

解决方案?一种方法是确定使用哪个浏览器,并相应地分离代码。

原因是,当你的代码在非本地浏览器中运行时,你的代码的每个部分都会“中断”(因为对象不存在于其本机浏览器之外 - 例如在IE中,它永远不会让它到你的else if {}因为if {}的第一部分中的Firefox特定对象会将其分开,因此会出现错误消息)。

+0

我知道。第一个“if”用于Mozilla,第二个用于IE,第三个用于Opera,而“else”用于登录,该功能不受支持。 –

+0

@JohannesKlauß你有没有办法改变你的'if {}'语句,以便Mozilla部分属于'else {}',所以你不必提及'window.sidebar'?或者确定是否正在使用IE8,并跳过声明? – lifetimes

+0

嗯,我已经尝试过了,但是错误仍然出现,指向'window.external && window.external.AddFavorite'之前的'if',表示该对象不支持该属性或方法。 –

相关问题