javascript - 如何防止javascript div弹出窗口跳回到页面顶部?

标签 javascript css html popup

我有以下简洁的代码,当单击链接时会打开一个小弹出框...问题是我在一个包含很多内容的很长的页面上使用它,每当有人打开弹出窗口时,实际内容页面跳回到最顶部,如果有人只是花了一段时间向下滚动,这会很烦人。即使弹出窗口打开/关闭,我如何强制页面停留在那里?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <script type="text/javascript">
            function showPopUp(el) {
                var cvr = document.getElementById("cover")
                var dlg = document.getElementById(el)
                cvr.style.display = "block"
                dlg.style.display = "block"
                if (document.body.style.overflow = "hidden") {
                    cvr.style.width = "1024"
                    cvr.style.height = "100%"
                }
            }
            function closePopUp(el) {
                var cvr = document.getElementById("cover")
                var dlg = document.getElementById(el)
                cvr.style.display = "none"
                dlg.style.display = "none"
                document.body.style.overflowY = "scroll"
            }
        </script>
        <style type="text/css">
            #cover {
                display:none;
                position:absolute;
                left:0px;
                top:0px;
                width:100%;
                height:100%;
                background:gray;
                filter:alpha(Opacity=50);
                opacity:0.5;
                -moz-opacity:0.5;
                -khtml-opacity:0.5
            }
            #dialog {
                display:none;
                position:absolute;
                top:50%;
                left:50%;
                width:400px;  /* adjust as per your needs */
                height:400px;   /* adjust as per your needs */
                margin-left:-200px;   /* negative half of width above */
                margin-top:-200px;   /* negative half of height above */
                z-index:100;
                background:white;
                padding:2px;
                font:10pt tahoma;
                border:1px solid gray
            }
        </style>
    </head>
    <body>
        <div id="cover"></div>
        <div id="dialog">
            My Dialog Content
            <br><input type="text">
            <br><input type="button" value="Submit">
            <br><a href="#" onclick="closePopUp('dialog');">[Close]</a>
        </div>
        <a href="#" onclick="showPopUp('dialog');">Show</a>   
    </body>
</html>

最佳答案

更改此代码:

from <a href="#" onclick="closePopUp('dialog');">[Close]</a>

<a href="javascript:void(0)" onclick="closePopUp('dialog');">[Close]</a>

还有:

<a href="#" onclick="showPopUp('dialog');">Show</a>  

到:

<a href="javascript:void(0)" onclick="showPopUp('dialog');">Show</a> 

试试吧。

关于javascript - 如何防止javascript div弹出窗口跳回到页面顶部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11024123/

相关文章:

javascript - 打开没有选项卡部分的新弹出式 chrome 窗口

javascript - 如何在 ReactJS 中使用带有钩子(Hook)的复选框作为单选按钮?

javascript - jQuery 偏移量为 <span> 或内联 <div> 返回无效值

javascript - 从导航到特定部分的滚动效果

html - 如何使用 CSS 在图像上滑动 div?

javascript - 重新访问同一页面时记住复选框值

Javascript 插件未加载

javascript - 是否可以用 Javascript 编写纯文本?

jquery - 图片对齐,jQuery Lightbox插件重复查看图片,<h2><p>链接?为什么?

css - Neo4j 2.0.1 graphstyle.grass 用于多个标签