我有一个包含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”-变量不是我可以使用的变量,因为它们与主页无关。
有什么想法吗?
如果仅打算支持IE,则可以通过调用window.showModalDialog尝试使用新的模式窗口。您可以将新窗口放置在屏幕上的任何位置。
一般来说,使用新窗口和模态窗口有很多缺点...
顺便说一下-FF 3及以上 supports window.showModalDialog
您说这是一个企业应用程序-您必须支持所有主流浏览器,还是IE足够?
我问这个是因为IE的功能完全可以满足您的需要:
window.createPopup(...)
http://msdn.microsoft.com/en-us/library/ms536392(VS.85).aspx
即使在浏览器窗口之外,弹出窗口也将可见! :-)
要显示它,请使用.show(...)方法,该方法接受position和size参数(有关详细信息,请参考MSDN)。令人高兴的是,您还可以将引用传递到相对于页面元素的位置,因此您可以轻松地将弹出窗口相对于某个页面元素,某个框架,某个浏览器窗口甚至相对于桌面进行定位。
我强烈建议您使用CSS将您的框架集切换为标准DIV布局。这是设置lots of different css layouts的良好起点。
我知道这可能不是您想听到的,但是除了您当前面临的弹出菜单问题外,相框还有很多缺点。例如: