【问题标题】:Window focus is not working in Javascript窗口焦点在 Javascript 中不起作用
【发布时间】:2019-07-01 05:59:09
【问题描述】:

当我单击 Notebook 按钮时,我希望它打开 notebook.html,如果我再次单击它,我希望 Notebook.html 进入焦点而不刷新。 (用户更新 Notebook.html,刷新会丢失他们更新的数据。)

这部分有效,但是它确实刷新了页面,并且我丢失了任何已添加的数据。

<script>
function openNotebook() {
    window.open('notebook.html', "notebook","width=800, height=600, resizable=yes, top=50, left=10").focus();
}
</script>

<button type="button" class="btn btn-primary" onclick="return openNotebook()">Notebook</button>

【问题讨论】:

    标签: javascript window focus


    【解决方案1】:

    试试这个

    • 测试你是否已经打开它
    • 返回 false 以停止可能的表单提交或使用 type="button"
    • 删除参数中的空格

    var w;
    function openNotebook() {
      if (w && !w.closed) w.focus(); // focus if exists and is not closed
      else w = window.open("notebook.html","notebook",
        "width=800,height=600,resizable,top=50,left=10");
    
      return false; // or preventDefault or make the button type="button"
    }
    

    测试是否 w.close 的替代方法,通过在 notebook.html 中添加它来从开启器中删除 w

    window.onbeforeunload=function() { opener.w=null; }
    

    【讨论】:

    • 完美,谢谢。我离得那么近却又那么远! :)
    • 我发现这个解决方案有个小问题。它工作得很好,但现在当我关闭 notebook.html(单击关闭按钮)并尝试重新打开时,它不会因为它认为它仍然打开并进入 w.focus();函数 closeNotebook() { window.open('','_self').close();非常感谢任何进一步的帮助。
    • 非常感谢 :) 我选择了更改 js 的第二个选项。按预期工作。感谢您为我更新答案,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    • 1970-01-01
    • 2012-06-05
    相关资源
    最近更新 更多