【问题标题】:strange jQuery problem奇怪的jQuery问题
【发布时间】:2011-08-17 20:10:42
【问题描述】:

我每次加载页面时都会调用这个 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 上 右键单击 并显示弹出面板时,该面板不会完全呈现在我按下右键的位置,而是在下方大约 100 像素...如果我取消注释此 resizeMainContent 功能,右键单击效果很好...

您能提出解决方案吗?

谢谢。

更新: - 这是问题的截图:我在第一个Text上按右键,弹出窗口出现在第二个

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

我按右键的 div 有这个生成的代码(实际上它使用了一个ice:menuPopupicefaces 组件)

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

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

【问题讨论】:

  • 能否也显示右键处理程序代码的代码?
  • 您是说右键菜单偏移了 100px 还是灯箱样式的弹出窗口偏移了 100px?假设灯箱,定位是什么 - 相对、绝对、静态或固定?您何时决定将弹出窗口放置在何处 - 单击时或绘制页面时?
  • 请将链接发布到完整重现问题的 jsfiddle sn-p。
  • 我已经更新了我的帖子...使用 jsfiddle 很难重现它,并且该网站还没有上线...
  • 我敢打赌 Ice 代码会在页面生成时生成其相对位置,而不是在点击时生成。当你调整它的大小时,然后使用旧的角位置并单击文本框内的 x-y 来定位上下文菜单。

标签: javascript jquery jsf


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多