将接受的答案与弹出窗口一起使用时,您可能会遇到一些问题。在某些情况下,单击随机位置可能会导致不需要的操作,即错误地单击按钮可能会将您带到新页面。
我不确定这是否是最有效的解决方案,但为了防止这种情况,我建议使用screenmask。确保屏幕掩码位于标签的正下方,<body>
以便它可以覆盖整个屏幕width:100%; height: 100%
。另请注意,它首先是由z-index: 99
. 如果您希望在屏幕掩码处于活动状态时可以点击另一个项目或 div,只需为该项目或 div 分配更高的 z-index。
屏幕掩码最初是不显示的 ( displayed:none
),单击时会调用隐藏函数 ( onclick="hidemenu()"
)。
<body>
<div class="screenmask" onclick="hidemenu()" style="position:fixed; width: 100%; height: 100%; top: 0px; right: 0px; display: none; z-index: 99;"></div>
处理“同一页面上的多个不同弹出菜单”的 javascript 函数可能如下所示:
<script>
// an element with onclick="showmenu('id_here')" pops a menu in the screen
function showmenu(id) {
var popmenu = document.getElementById(id); // assume popmenu is of class .cardmenu
$('.cardmenu').hide(); // clear the screen from other popmenus first
$(popmenu).show(); // pop the desired specific menu
$('.screenmask').show(); // activate screenmask
}
function hidemenu() { // called when clicked on the screenmask
$('.cardmenu').hide(); // clear the screen from all the popmenus
$('.screenmask').hide(); // deactivate screenmask
}
</script>