JavaScript中的框架位置

问题描述 投票:1回答:3

我有一个包含3个框架的基于框架的网页。一个复印机,一个导航栏在左侧,一个内容框架在右下侧。

现在,当用户右键单击内容框架时,我想显示一个弹出菜单。因为div容器无法移出框架,所以我的想法是将整个框架页面放入新的iframe中。在该页面中,我可以有第二个iframe,这是我的弹出菜单。

所以现在,我正在使用此布局:

<html> (start-page)
  <iframe  (real content)
    <frameset 
      top-frame
      navigation-frame
      content-frame
    >
  >
  <iframe> (my popup-menu, positioned absolutelly and hidden by default)
</html>

在我的内容框架中,我将“ onmouseover”事件分配给了身体标签。此事件应在当前鼠标位置打开popup-iframe。而这正是我的问题:如何相对于顶级网站(我的草稿中的起始页)获得鼠标坐标?

当前,我具有此mouseDown功能(目前仅在IE中有效-但是让它在FF&Co中工作应该不是问题...)

function mouseDown(e)
{
  if (window.event.button === 2 || window.event.which === 3) 
  {
    top.popupFrame.style.left = event.screenX + "px";
    top.popupFrame.style.top = event.screenY + "px";
    top.popupFrame.style.display = "";
    return false;
  }    
}

如您所见,“ event.screenX”和“ screenY”-变量不是我可以使用的变量,因为它们与主页无关。

有什么想法吗?

javascript popup frame mouse-position
3个回答
1
投票

如果仅打算支持IE,则可以通过调用window.showModalDialog尝试使用新的模式窗口。您可以将新窗口放置在屏幕上的任何位置。

一般来说,使用新窗口和模态窗口有很多缺点...

顺便说一下-FF 3及以上 supports window.showModalDialog


1
投票

您说这是一个企业应用程序-您必须支持所有主流浏览器,还是IE足够?

我问这个是因为IE的功能完全可以满足您的需要:

window.createPopup(...)

http://msdn.microsoft.com/en-us/library/ms536392(VS.85).aspx

即使在浏览器窗口之外,弹出窗口也将可见! :-)

要显示它,请使用.show(...)方法,该方法接受position和size参数(有关详细信息,请参考MSDN)。令人高兴的是,您还可以将引用传递到相对于页面元素的位置,因此您可以轻松地将弹出窗口相对于某个页面元素,某个框架,某个浏览器窗口甚至相对于桌面进行定位。


0
投票

我强烈建议您使用CSS将您的框架集切换为标准DIV布局。这是设置lots of different css layouts的良好起点。

我知道这可能不是您想听到的,但是除了您当前面临的弹出菜单问题外,相框还有很多缺点。例如:

  • 框架很难或不可能正确地添加书签,因为框架集通常是地址中唯一可见的页面。
  • 通过在新的浏览器窗口中加载链接,很容易打破框架集。这意味着用户可能会失去导航或迷路。
  • 它们不会在移动设备和纯文本浏览器上正常降级。 CSS布局的一大优点是,即使未打开任何样式,它们仍然可用。
© www.soinside.com 2019 - 2024. All rights reserved.