Javascript IE标准vs怪癖处理偏左

Javascript IE标准vs怪癖处理偏左,javascript,jquery,css,internet-explorer,Javascript,Jquery,Css,Internet Explorer,我们正在修改一个旧的预先存在的web应用程序,作为其中的一部分,我们已经开始使用IE10查看它。此应用程序有第三方菜单控件menu9_com.js?在我们注意到的众多问题中,这一菜单在IE7+标准模式下的定位问题。在FF、Chrome或任何带有怪癖的IE版本中,它的位置都是正确的。然而,在标准模式下,它被推到了很远的右边 我已经将下面的函数确定为该问题的可能来源。在任何模式下运行时,startEFT的值的起始点大致相同。在工作模式中,它以一个定义为有效的值结束。在中断模式中,它要高得多 虽然还不

我们正在修改一个旧的预先存在的web应用程序,作为其中的一部分,我们已经开始使用IE10查看它。此应用程序有第三方菜单控件menu9_com.js?在我们注意到的众多问题中,这一菜单在IE7+标准模式下的定位问题。在FF、Chrome或任何带有怪癖的IE版本中,它的位置都是正确的。然而,在标准模式下,它被推到了很远的右边

我已经将下面的函数确定为该问题的可能来源。在任何模式下运行时,startEFT的值的起始点大致相同。在工作模式中,它以一个定义为有效的值结束。在中断模式中,它要高得多

虽然还不完全清楚,但我相信该函数正在从给定的目标位置向DOM上移动,并在上面添加值,以计算它所添加的菜单元素的总偏移量。我认为问题的根源在于抵消债务和抵消父母债务的不同方式?处理好了。因此,我试图找到从这个函数中获得一致行为的最佳方法,但对函数的意图,以及各种模式下的offsetLeft等行为都不够熟悉

下面是函数:

function ClcTrgt() {
    var TLoc=Nav4?FLoc.document.layers[TargetLoc]:DomYesFLoc.document.getElementById(TargetLoc):FLoc.document.all[TargetLoc];
    if (DomYes) {
        while (TLoc) {
            StartTop += TLoc.offsetTop;
            StartLeft += TLoc.offsetLeft;
            TLoc = TLoc.offsetParent;
        }
    }
    else {
        StartTop+=Nav4?TLoc.pageY:TLoc.offsetTop;
        StartLeft+=Nav4?TLoc.pageX:TLoc.offsetLeft;
    }
}
有什么建议吗?例如,如果我知道如何使用jQuery,我会将此函数转换为使用jQuery

更新:
我已经发布了脚本。

我当前的方向是,在没有对脚本进行实际修复的情况下,添加此函数以在脚本本身之后运行。我添加了一些标记来简化它,它只需要使用菜单,并将它放在应该的位置,它与我标识的另一个元素对齐。这是为了从最佳,但它的工作

function fixMenu9() {
    var pTD = $('#pgMenuDivTD');
    var pMN = $('#pgMenuDiv');

    var additionalOffset = ExpYes ? 3 : 0;

    var leftVal = (parseInt(pTD.offset().left) + parseInt(pTD.css('width'))) - (parseInt(pMN.css('width')) + additionalOffset);
    $('#pgMenuDiv').css('left', leftVal);
}

我认为document.getElementByIdTargetLoc在所有使用的浏览器中都以该元素为目标。但是,您的代码片段仅显示如何计算位置。您还应该显示相关的HTML和CSS,以及如何实际使用计算值。A将非常有用。中没有任何内容表明偏移*属性在“怪癖”模式下的处理方式与滚动*和客户端*属性不同,因此我想知道StartEFT的不同值是否是症状,而不是原因。@Alohci省略单位会有所不同。虽然这可能不是问题所在,因为OP说这种定位对于其他现代浏览器来说是正确的…@Teemu-我不是这样理解这个问题的。OP表示,它的定位在现代浏览器的怪癖模式下是正确的,但不是标准模式。我想你很可能是对的。无单位长度是我首先要找的。三个像素离右边很远吗?如果需要,jQueryCSS方法还会添加一个默认单位。你可以得到一个实际的修复,如果你只是发布更多的代码…@Teemu-不,3px是一个调整,它覆盖了IE中计算的偏移量b/t的微小差异,因此ExpYes条件,与它真正需要的位置相比。至于发布更多的代码,如果你看原始问题,它是在5小时前用一个pastebin链接编辑的。对不起,我没有注意到你的链接。。。不管怎样,对于代码不工作的浏览器/模式似乎有不同的看法。你能澄清这个问题吗?另外,您是否检查了分配样式的实际代码是否具有单位?怪癖模式默认使用像素,但在HTML5模式下,您必须在定位规则中包含该单元。。。此外,缩小范围的示例比大量代码更合适:。