奇怪的jQuery问题

时间:2011-05-03 15:41:13

标签: javascript jquery jsf

我有这个jQuery方法,我每次加载页面时调用,调整主div的内容(可滚动的):

function resizeMainContent() {
    var newSize = jQuery(window).height();

    if (window.location.pathname.indexOf("appsportfolio") != -1) {
            newSize = newSize - 105;
    } else if (window.location.pathname.indexOf("userapp") != -1) {
            newSize = newSize - 128;
    } else if (window.location.pathname.indexOf("password") != -1
                    || window.location.pathname.indexOf("create_user") != -1
                    || window.location.pathname.indexOf("create_account") != -1) {
            newSize = newSize - 105;
    }

    if (jQuery.browser.msie)
            newSize = newSize + 3;

    jQuery("#mainContentPanel").height(newSize);
}

嗯,在chrome和FF上都很棒。但是,在IE上,如果调用此方法,当我右键单击其他div上的并显示一个弹出式面板时,该面板未完全呈现在我按下右键单击的位置但在下方约100px ...如果我取消注释此resizeMainContent函数,右键单击效果很好......

你能建议一个解决方案吗?

感谢。

更新: - 这是一个问题的屏幕截图:我右键点击第一个Text,弹出窗口显示在第二个enter image description here

如果我评论上面的jQuery方法,它就会出现在我按下右键的位置。

我按下右键的div有这个生成的代码(实际上它是使用ice:menuPopup icefaces组件)

oncontextmenu="Ice.Menu.contextMenuPopup(event, 'j_id1378:sectionContextMenu_sub', 'j_id1378:j_id1401:0:j_id1413:1:j_id1414');return false;"

所以它从他们的源代码中调用了一些javascript方法,这些方法可以正常工作(他们的演示工作完美)所以问题肯定不在他们的javascript代码中......

1 个答案:

答案 0 :(得分:0)

我已应用此问题的解决方法是覆盖icefaces Ice.Menu.contextMenuPopup method并在我的情况下应用-100px,如果当前浏览器是IE。

当然这也意味着oncontextmenu应该指向我的方法,而不是他们的方法,我做的不是很干净但是......至少this有效... < / p>