偏移正确的IE计算?

时间:2011-03-04 14:05:47

标签: javascript internet-explorer-8

在我的javascript方法中,我有这个:

if (getInternetExplorerVersion() != '-1') {
        alert("IE!");
        Ice.Menu.showIt(targCompObject.offsetLeft
                + targCompObject.parentNode.offsetLeft,
                targCompObject.offsetTop
                        + targCompObject.parentNode.offsetTop, popupMenu,
                targComp);
    } else {
        Ice.Menu.showIt(targCompObject.offsetLeft,
                targCompObject.offsetTop, popupMenu, targComp);
    }

在FF和Chrome上,其他部分工作正常。在IE上,我不得不改为计算,所以现在我有主要的if ...这仍然不好。

你知道其他选择吗?

更新:忘记提及对于IE,左边是正确计算的,但顶部不是。

暂时的解决方法(当然很丑陋)是我从计算中减少了x个像素,以适应我希望函数在IE上显示弹出窗口的位置。

感谢。

3 个答案:

答案 0 :(得分:1)

您是否可以使用条件样式表并更改未正确显示的样式?

<!--[if IE]>
        <link rel="stylesheet" type="text/css" href="iefix.css" />
<![endif]-->

答案 1 :(得分:0)

你永远不应该像这样做“浏览器检测”。这在网络开发中是一个很大的“不可”,因为它会导致许多后续问题。

相反,首先确保您的网页未以“怪癖模式”运行,检查您的HTML是否以正确的DOCTYPE开头,然后验证您的网页并删除所有错误:http://validator.w3.org/

如果您的页面仍然需要特殊处理IE查找"feature detection"并尝试使用它来做其他事情。

(但在您的情况下,功能检测可能不是解决方案。有关此特定问题的更具体帮助,我们需要详细说明:解释“Ice”是什么,HTML代码和/或运行示例)

答案 2 :(得分:0)

有一个带有margin-top的div,这是IE的左偏移计算错误的原因。