Javascript 防止浏览器中出现窗口弹出警告
我正在尝试在新窗口中打开jsp页面。使用javascriptJavascript 防止浏览器中出现窗口弹出警告,javascript,html,jsp,Javascript,Html,Jsp,我正在尝试在新窗口中打开jsp页面。使用javascriptwindow.openyeilds浏览器警告,在某些情况下(firefox)默认会阻止弹出窗口。有没有办法解决这个问题(这不是恶意应用程序-它是一个内部用户工具)?如果弹出窗口是由用户操作(如单击按钮)触发的,大多数浏览器不会阻止它。例如,如果您的window.openjavascript附加到按钮的onclick事件,浏览器将不会阻止它 另一方面,如果您试图在没有任何用户操作的情况下显示弹出窗口,那么您就没有运气了。这正是恼人广告使用
window.open
yeilds浏览器警告,在某些情况下(firefox)默认会阻止弹出窗口。有没有办法解决这个问题(这不是恶意应用程序-它是一个内部用户工具)?如果弹出窗口是由用户操作(如单击按钮)触发的,大多数浏览器不会阻止它。例如,如果您的window.open
javascript附加到按钮的onclick
事件,浏览器将不会阻止它
另一方面,如果您试图在没有任何用户操作的情况下显示弹出窗口,那么您就没有运气了。这正是恼人广告使用的技术,因此浏览器无法区分你的应用程序和恼人广告。大多数浏览器不会阻止由用户操作(如单击按钮)触发的弹出窗口。例如,如果您的
window.open
javascript附加到按钮的onclick
事件,浏览器将不会阻止它
另一方面,如果您试图在没有任何用户操作的情况下显示弹出窗口,那么您就没有运气了。这正是恼人广告使用的技术,因此浏览器无法区分你的应用程序和恼人广告。我将在这里分享我的解决方案,因为我发现没有提供任何解决方案 第一件事 当弹出窗口打开时,每个浏览器都有一个可接受的时间限制,在该时间限制之后,它将删除“信任”,假设现在它不在用户操作范围内,并阻止弹出窗口。这一时间限制因浏览器而异,例如,chrome浏览器的时间限制为3秒,而firefox浏览器的时间限制为2秒 如何阻止浏览器阻止弹出窗口 首先,您需要确保仅在某些用户操作上打开一个弹出窗口 然而,这并不总是可能的。例如,每当用户单击“打印发票”时,我需要打开一个弹出窗口来加载发票的pdf。当用户单击按钮时,我没有pdf,我需要执行以下操作:
- 发出ajax请求
- 在服务器上生成pdf
- 发回一个公共可访问路径,我会将其加载到弹出窗口中,以便在浏览器中显示pdf
- 当用户单击按钮时,立即打开弹出窗口
- 将焦点切换到该弹出窗口
- 然后发出ajax请求,并从服务器获取加载路径或您需要的任何内容
- 在弹出窗口中加载url或根据服务器响应进行所需的修改
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);
}
});
当然,你需要根据你的需要调整它,但我希望它能帮助你朝着正确的方向前进
我已根据提供的有关弹出窗口的有用信息解决了我的问题
我希望它能有所帮助我将在这里分享我的解决方案,因为我发现没有提供任何解决方案 第一件事 当弹出窗口打开时,每个浏览器都有一个可接受的时间限制,在该时间限制之后,它将删除“信任”,假设现在它不在用户操作范围内,并阻止弹出窗口。这一时间限制因浏览器而异,例如,chrome浏览器的时间限制为3秒,而firefox浏览器的时间限制为2秒 如何阻止浏览器阻止弹出窗口 首先,您需要确保仅在某些用户操作上打开一个弹出窗口 然而,这并不总是可能的。例如,每当用户单击“打印发票”时,我需要打开一个弹出窗口来加载发票的pdf。当用户单击按钮时,我没有pdf,我需要执行以下操作:
- 发出ajax请求
- 在服务器上生成pdf
- 发回一个公共可访问路径,我会将其加载到弹出窗口中,以便在浏览器中显示pdf
- 当用户单击按钮时,立即打开弹出窗口
- 将焦点切换到该弹出窗口
- 然后发出ajax请求,并从服务器获取加载路径或您需要的任何内容
- 在弹出窗口中加载url或根据服务器响应进行所需的修改
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);
}
});
当然,你需要根据你的需要调整它,但我希望它能帮助你朝着正确的方向前进
我已根据提供的有关弹出窗口的有用信息解决了我的问题
我希望它能有所帮助为什么它需要放在一个新窗口中?通过
window.open()
而不是例如target=“\u blank”
打开它背后的功能要求是什么?根据您的问题历史记录,您正在使用jQuery,您是否也使用jQuery UI?如果它是一个内部工具,请您的用户将其列为白名单。我正在使用jQuery和jQuery UI。它只需要在一个新窗口中(不管它是否是最好的选择)。为什么它需要在一个新窗口中?通过window.open()
而不是例如target=“\u blank”
打开它背后的功能要求是什么?根据您的问题历史记录,您正在使用jQuery,您是否也使用jQuery UI?如果它是一个内部工具,请您的用户将其列为白名单。我正在使用jQuery和jQuery UI。它只需要在一个新窗口中(不管它是否是最好的选择)。不幸的是,要求是后者(没有用户操作)@john如果它只是需要某种对话框,而不一定是一个“真正的”弹出窗口,也许你可以使用jQuery对话框b