如何在target_blank打开新标签页后自动刷新该标签页
解决方案
你的问题出在原JS代码里的location.reload(true)是操作当前页面的位置对象,所以会刷新原标签页,而非新打开的标签页。要实现新标签页1秒后自动刷新,需要获取新窗口的引用并对其执行刷新操作,具体修改如下:
修改后的HTML代码
<a href="@Html.Raw(item.Image)" onclick="return handleOpen(this)" class="btn btn-primary">Show</a>
修改后的JS代码
function handleOpen(link) { // 打开新标签页并获取窗口引用 const newWindow = window.open(link.href, '_blank'); // 1秒后刷新新标签页 setTimeout(() => { // 检查窗口是否存在且未被关闭 if (newWindow && !newWindow.closed) { newWindow.location.reload(true); } }, 1000); // 阻止a标签默认跳转行为,避免重复打开窗口 return false; }
关键说明
- 用
window.open()打开新窗口时,会返回该窗口的引用,通过这个引用可以直接操作新标签页的location对象 - 添加
return false阻止a标签的默认跳转逻辑,避免同时触发两次窗口打开操作 - 增加窗口存在性检查,防止用户在1秒内关闭新标签页导致报错
内容的提问来源于stack exchange,提问作者aoiTenshi
相关产品推荐
相关产品推荐

