English 中文(简体)
JavaScript 中的框架位置
原标题:
  • 时间:2008-12-29 08:12:59
  •  标签:

我有一个基于帧的网页,有三个框架。上部标题栏,左侧导航和右下角的内容框架。

现在,当用户在内容框上右键单击时,我想显示一个弹出菜单。因为 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”事件分配给了body标签。这个事件应该在当前鼠标位置打开弹出式框架。而我的问题正是出在这里:如何相对于顶部网页(我的示草稿中的起始页面)获取鼠标坐标?

目前我正在使用此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”变量并非我可以使用的变量,因为它们与主页面无关。

有什么想法吗?

最佳回答

If you are only planning to support IE - you can try using a new modal window by calling window.showModalDialog. You can position the new window anywhere on the screen.

通常情况下,使用新窗口,特别是模态窗口,有很多缺点...

顺便说一下 - FF 3及以上版本也支持window.showModalDialog。

问题回答

你说这是一款企业应用程序-你是否需要支持所有主流浏览器,还是只需支持IE?

我之所以问这个问题是因为IE有一个函数,可以完全满足您的需求:

window.createPopup(...)

将此翻译成中文:http://msdn.microsoft.com/en-us/library/ms536392(VS.85).aspx

弹出窗口将在浏览器窗口之外仍然可见! :-)

为了显示它,使用 .show(...) 方法,它接受位置和大小参数(有关详细信息,请参阅 MSDN)。好处是,您还可以传递与其位置相关联的页面元素的引用,因此您可以轻松地将弹出窗口相对于某个页面元素、某个框架、某个浏览器窗口甚至相对于桌面定位。

我强烈推荐将你的框架转换为使用css的标准DIV布局。这是设置许多不同css布局的好起点

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

  • Frames are difficult or impossible to bookmark correctly since the frameset is usually the only page that is visible in the address.
  • Its very easy to break out of a frameset by loading a link in a new browser window. This means that a user could lose their navigation or get lost.
  • They don t degrade gracefully on mobile devices and text-only browsers. A big plus for css layouts is that even without any styles turned on, they re still usable.




相关问题
热门标签