如果以下情况IE8中断:对象不支持此属性或方法

时间:2013-05-17 08:25:14

标签: javascript internet-explorer-8 bookmarks

我正在Web应用程序中实现书签功能。在FF中工作正常(Chrome不支持它),但它在IE8中引发错误,甚至在IE9& IE10。

这是代码(它位于点击处理函数中,非常直接):

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 个答案:

答案 0 :(得分:1)

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

来自window.sidebar的{​​{3}}:

  

规范 - “特定于Mozilla。不属于任何标准。”

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

原因是代码的每个部分在其非本机浏览器中运行时都会“中断”(因为对象不存在于其本机浏览器之外 - 例如在IE中,它永远不会进入您的{{ 1}}因为else if {}的第一部分中的特定于Firefox的对象打破了它,因此您的错误消息)。