【问题标题】:How to close the webpage on its own on clicking a button如何在单击按钮时自行关闭网页
【发布时间】:2019-02-19 06:24:42
【问题描述】:

我有一个页面,其中保留了<button>onClick() 事件触发并重定向新标签中的新页面。同时,我希望父页面在单击<button> 并在新选项卡中打开新页面后立即自行关闭。它基本上是为了网站的一些安全功能。如何才能做到这一点? 这是我的<button>,让我知道我在哪里可以纠正自己。

<button formtarget="_blank" type="submit" name="submit" onClick="javascript:window.open('quiz.php?unit_id=<?php echo $fnc->encode($unit_id) ; ?>');self.close();" value="submit" class="btn btn-info" style='margin-left: 35%;margin-bottom: 10px;' ><i class="glyphicon"></i> Start Quiz</button>

【问题讨论】:

  • 如果您的脚本没有启动打开窗口(使用 window.open 之类的东西),则该窗口中的脚本不允许关闭它。检查这个问题stackoverflow.com/questions/25937212/…
  • 等待点击按钮会打开一个新标签,而您想同时关闭旧标签。除非我遗漏了什么,否则为什么不在同一个标​​签中打开 URL?
  • @VLAZ 感谢您的及时回复。我很感激。是的,我想在单击按钮并在新选项卡中打开新窗口时关闭当前窗口。
  • @Ansh 但是为什么打开一个新标签并关闭当前标签?为什么不在同一个标​​签内重定向?你似乎在有效地做同样的事情。没有解释 - 这似乎是不必要的或XY problem
  • @VLAZ 它是一个在线测验模块,我不希望用户在尝试测验时回到其他页面。

标签: javascript html windows


【解决方案1】:

您可以通过以下功能关闭窗口

function close(){
 setTimeout("window.close()", 500);
}

但请记住:脚本可能只关闭它打开的窗口。

【讨论】:

  • 不要在setTimeout 中使用字符串——传递一个函数。字符串调用eval,这是不必要的。让我们抛开安全方面,在更基本的层面上,从可维护性的角度来看它是很糟糕的。甚至让我们采用最基本的版本——语法高亮在您选择的编辑器中不起作用。从那里开始,链上的问题越来越多,传递一个字符串除了使代码稍微更短之外没有解决任何问题,因为您(充其量)省略输入function() { }
【解决方案2】:

窗口关闭并打开新标签

<script language="javascript">

function quitWindow(cmd) 
{      
    if(window.open("your_new_tab_page.htm")){
        if (cmd=='quit')    
        {
           open(location, '_self').close();    
        }   
    }
    return false;   
}

</script>

<input  type="submit" onclick="return quitWindow('quit');" value="Close This Window and open new Tab" /> 

如果你使用firefox,你应该通过写url bar和set来设置about:config

dom.allow_scripts_to_close_windows = true

否则火狐就不行

【讨论】:

  • 谢谢,我试过了,但当前网页没有关闭。还能做点别的吗?
  • @Ansh 如果你使用firefox,你应该通过写url bar配置about:config并设置dom.allow_scripts_to_close_windows = true 否则firefox不起作用
  • 谢谢。但是你能在上面的代码中演示一下吗?
【解决方案3】:

我认为这可能有效。

    <script>

    function openWindow( url )
    {
            window.open(url, '_blank');
            window.focus();
            window.close();
    }

    </script>
    <button onclick="javascript:openWindow(yourHref);return false;">Submit</button>

【讨论】:

  • 你能给我解释一下上面提到的答案吗?我的意思是window.open(url, '_blank', "shilpijain" ,"modal=no");,我无法得到这部分。
  • @Ansh window.open(URL, name, specs (optional) , replace (optional) ) 参考 - w3s features 也可以被添加。,window.open(url,windowName,[windowFeatures]);参考 - here
【解决方案4】:

出于安全原因,如果用户从您网站以外的任何其他地方点击您网站的链接,您将无法关闭您的网页。

【讨论】:

    猜你喜欢
    • 2013-05-15
    • 1970-01-01
    • 2022-08-05
    • 2016-04-02
    • 2015-03-04
    • 2023-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多