Javascript for .NET 3.5:如何在弹出窗口关闭后提供文本框焦点
Javascript for .NET 3.5: How to give textbox focus after a pop-up is closed
有没有办法通过window.open(....)打开弹出窗口,让它停留在主窗口的顶部,并在关闭时将焦点放在调用页面上的文本框上?
我的任务是调整别人编写的功能。.NET 3.5 页面当前允许重新入库库存,单击按钮后,新弹出窗口会显示收据。弹出窗口的 html 存储在隐藏字段中,并通过调用 js 函数打开。
页面上还有一个文本框,我被要求保持焦点。除了显示收据时,我让它工作。如果我调用服务器或客户端函数来保持文本框的焦点,弹出窗口会在主窗口的顶部出现一秒钟,然后被主页覆盖,因为文本框接收焦点,这不是想要的。
您是否可以采用不同的设计并使用类似jQuery对话框的内容来获取收据,而不是回发到服务器?维护焦点客户端将比尝试强制它通过服务器端要容易得多。
可能适合您的解决方案是让弹出页面告诉它的"父"页面,以便在关闭时将焦点设置为其控件之一。 你可以用javascript来做到这一点。
在弹出页面上,将其添加到正文标记中
<body onbeforeunload='window.opener.getElementById("textbox_to_focus").focus();'>
警告:每当用户导航离开页面(即回发、后退按钮、关闭按钮等)时,就会触发 onbeforeunload 事件。 如果您的弹出页面没有任何导航或任何回发,那么这应该适合您。
这可能不是最有效的方法,但您可以打开窗口并让 JS 计时器以每秒的间隔在主窗口上运行。然后使用if(window.closed)
确定窗口是否已关闭。如果有,则将焦点设置为文本框并禁用计时器。
下面是如何实现上述内容的示例页面:
<html>
<head>
<script type="text/javascript">
testwindow = window.open("<your page>","window");
function timer()
{
var t=setTimeout("checkWindow()",1000);
}
function checkWindow()
{
if(testwindow.closed)
document.getElementById("tbox").focus();
else
timer();
}
</script>
</head>
<body onload="timer()">
<input name="tbox" />
</body>
</html>
相关文章:
- 如何检测哪个窗口是焦点
- 只有当选项卡/窗口有焦点时,页面才能每5秒刷新一次
- 在ADF弹出窗口中设置焦点组件
- Javascript弹出窗口在某些情况下失去焦点
- 弹出窗口设置焦点
- JS - 在 Firefox 中窗口焦点并置于最前面
- 在系统焦点使用Electron的地方打开一个窗口
- 在刚刚创建的窗口中设置文本输入的焦点
- jQuery 图像推子不会在窗口失去焦点时停止
- 在调用窗口模糊(浏览器失去焦点)时避免元素模糊处理程序
- 如何通过单击按钮自动打开子窗口作为焦点窗口(IE)
- 将焦点从子窗口返回到父窗口
- Javascript 多线程两个窗口焦点
- 在窗口焦点事件之前在 HTML 的 body 标记中运行 onload 事件
- 切换标签页时,窗口焦点在镶边中不起作用
- 在JavaScript中不刷新窗口焦点
- 在Javascript中检查子窗口焦点
- Chrome:是否有可能检测到javascript控制台失去窗口焦点
- 有没有一种从Javascript检查窗口焦点(不是文档)的方法?
- 使用链接设置窗口焦点