子窗口立即打开和关闭

时间:2014-01-18 17:02:28

标签: c# javascript jquery

我很困惑,我怎么能为此提供解决方案。我有一个要求,就像我的页面中有一个链接(父页面),点击该链接将打开一个新窗口(子页面),其中包含一些细节,然后如果我点击父窗口,子窗口必须关闭。我怎样才能做到这一点。这是我试过的。

 <script type="text/javascript">
            function OpenWindow() {
               popupWindow = window.open('WebForm2.aspx', 'popUpWindow', 'height=500,width=400,left=100,top=100,resizable=yes,scrollbars=yes')
            }
            function closeWindow() {              
                popupWindow.close();
            }
        </script>
        <div id="daf" style="height: 100vh;" onclick="closeWindow()">           
              <a id="myLink" title="Click to do something" href="" onclick="OpenWindow();return false;">link text</a>
        </div>


但我面临的问题是,当我点击链接窗口打开时,它立即关闭。这是因为div内部的链接。因此,单击该链接将触发这两个功能。请帮我解决问题

谢谢大家!我从Niko那里得到了解决方案。这是我在寻找的东西

<div id="Div1" style="height: 100vh;" onclick="closeWindow()">           
    <a id="A1" href="#" onclick="OpenWindow(true)">link dtext</a>
</div>

<script type="text/javascript">
    var firstTime = false; // make use of temp variable
    function OpenWindow(k) {
        firstTime = k;
        popupWindow = window.open('WebForm2.aspx', 'popUpWindow', 'height=500,width=400,left=100,top=100,resizable=yes,scrollbars=yes')
    }
    function closeWindow() {
        if (firstTime == false) popupWindow.close();
        firstTime = false;
    }

</script>

2 个答案:

答案 0 :(得分:1)

我不确定你是否想要这个,但是使用临时变量检查一下,你可以做到这一点。

在函数调用openWindow(true)中传递true值并使用firstTime变量是我所做的更改。

<script type="text/javascript">
  var firstTime = false; // make use of temp variable

  function OpenWindow(k) {
       firstTime = k;
       popupWindow = window.open('WebForm2.aspx', 'popUpWindow', 'height=500,width=400,left=100,top=100,resizable=yes,scrollbars=yes')
  }
  function closeWindow(){
       if(firstTime == false)  popupWindow.close();
       firstTime=false;
  }

</script>

<div id="daf" style="height: 100vh;" onclick="closeWindow()">           
    <a id="myLink" href="#" onclick="OpenWindow(true)">link text</a>
</div>

单击firstTime时将link text变量设置为true,关闭窗口时,比较该值并将其更改为false,以便下次单击。

答案 1 :(得分:0)

删除内联脚本:

<div id="daf" style="height: 100vh;"> 

并使用(内部文档就绪处理程序?):

$('#daf').click(function(e){
    if(e.target.id === "myLink") return;
    closeWindow();
});