joh*_*ohn 1 html javascript jsp
我正在尝试在新窗口中打开jsp页面.使用javascript window.openyeilds浏览器警告,在某些情况下(firefox)将默认阻止弹出窗口.有没有办法解决这个问题(这不是恶意应用程序 - 它是一个内部用户工具)?
kij*_*jin 10
如果由用户操作触发,大多数浏览器都不会阻止弹出窗口,例如单击按钮.例如,如果您的window.openjavascript附加到按钮的onclick事件,浏览器将不会阻止它.
另一方面,如果您尝试在没有任何用户操作的情况下显示弹出窗口,那么您运气不佳.这正是令人讨厌的广告使用的技术,因此浏览器无法区分您的应用和烦人的广告.
我将在这里分享我的解决方案,因为我看到没有提供。
第一件事
当弹出窗口打开时,每个浏览器都有一个可接受的时间限制,在此之后它会删除“信任”,假设现在它不在用户操作范围内并阻止弹出窗口。此时间限制因浏览器而异,例如 Chrome 为 3 秒,而 firefox 为 2 秒。
如何阻止浏览器阻止弹出窗口
首先,您需要确保仅在某些用户操作上打开弹出窗口。
然而,这并不总是可能的。例如,每次用户单击“打印发票”时,我都需要打开一个弹出窗口来加载发票的 pdf。当用户单击按钮时,我没有 pdf,我需要执行以下操作:
现在,根据 pdf 的复杂程度和客户端的互联网速度,上述过程总是花费不同的时间。
我遇到了这个问题,浏览器阻止了我的弹出窗口。
所以一个简单的解决方案是:
以下是一些代码行,可帮助您实际实现上述要点:
let newWindow = open('/', 'example', 'width=300,height=300')
newWindow.focus();
let data = {
//whatever data you need to provide
};
//send ajax
$.ajax({
type: "POST",
url: yourUrl,
headers: {
//if you use XCSRF or add any other header you might have
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
data: data,
success: function( response ) {
//load the returned content in new window
//or whatever else you need to do
newWindow.location.href = response.path;
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest, textStatus, errorThrown);
}
});
Run Code Online (Sandbox Code Playgroud)
当然,您需要根据需要对其进行调整,但我希望它可以帮助您找到正确的方向。
我已经根据此处提供的有关弹出窗口的有用信息解决了我的问题
我希望它有帮助
| 归档时间: |
|
| 查看次数: |
3440 次 |
| 最近记录: |