希望你能帮上一点忙……我有一个表格,翻译一个字在一个领域,填充字段与翻译的长期,然后做提交行动都在一个提交按钮。
提交是由jquery完成的。问题是目标页面被阻止,因为所有3个主要浏览器都将其视为弹出窗口,你知道如何让它作为新标签或新窗口打开吗?我不想把目标设为_self,因为我希望人们也能打开我的网站。
我相信问题就出在这条线上:
document.forms.form1.submit();
但我也知道应该有一种方法来重新措辞,使目标不会被视为弹出窗口。
这是脚本:
<script type="text/javascript">
$(function transle() {
$('#transbox').sundayMorningReset();
$('#transbox input[type=button]').click(function(evt) {
$.sundayMorning(
$('#transbox input[type=text]').val(), {
source: '',
destination: 'ZH',
menuLeft: evt.pageX,
menuTop: evt.pageY
},
function(response) {
$('#transbox input[type=text]').val(response.translation);
//document.getElementById("form1").submit();
document.forms.form1.submit();
}
);
});
});
</script>
这是表格
<table id="transbox" name="transbox" width="30px" border="0" cellspacing="0" cellpadding="0">
<form action="custom-page" method="get" name="form1" target="_blank" id="form1">
<tr>
<td>
<input id="q" name="q" type="text" class="search_input" onFocus="if (this.value == 'Evening dress') {this.value = '';}" onBlur="if (this.value == '') {this.value = 'Evening dress';}" value="Evening dress" />
</td>
<td>
<input type="button" value="Find" style="color: #333; width: 157px; font-weight:bold"></input>
</td>
</tr>
</form>
</table>
编辑
我尝试了所有这些字符串提交:
document.getElementById("form1").submit();
document.forms.form1.submit();
form1.submit();
所有这些都以目标被弹出阻止而结束。请问,有没有其他方法,我应该做的代码,不让它弹出?
也许应该使用onsubmit来创建jQuery?有人知道如何?
7条答案
按热度按时间kxkpmulp1#
如果打开选项卡/弹出窗口的命令来自可信事件,则浏览器将仅在没有弹出窗口阻止程序警告的情况下打开选项卡/弹出窗口。这意味着用户必须主动点击某个地方才能打开弹出窗口。
在您的示例中,用户执行单击,因此您拥有可信事件。但是,通过执行Ajax请求,您确实会丢失可信上下文。您的成功处理程序不再具有该事件。避免这种情况的唯一方法是执行同步Ajax请求,这将在浏览器运行时阻止浏览器,但将保留事件上下文。
在jQuery中,这应该可以做到:
以下是你的答案:Open new tab without popup blocker after ajax call on user click
cidc1ykv2#
这是唯一一个实际上为我工作的所有浏览器
let newTab = window.open(); newTab.location.href = url;
t2a7ltrp3#
作为一般规则,弹出窗口拦截器针对的是在没有用户交互的情况下启动的窗口。通常一个点击事件 * 可以 * 打开一个窗口而不被阻止。(除非它是一个非常糟糕的弹出窗口拦截器)
尝试在单击事件后启动
axr492tv4#
PS>我在一个相关的问题上发表了这个答案。下面是我如何解决我的Apache请求丢失可信上下文的问题:
我直接在用户点击时打开弹出窗口,将URL指向
about:blank
,并在该窗口上获得一个句柄。你可能会直接弹出到一个'加载'的网址,而您的aplog请求是var myWindow = window.open("about:blank",'name','height=500,width=550');
然后,当我的请求成功时,我在窗口中打开我的回调URL
fzsnzjdm5#
对于Submit按钮,添加以下代码,然后设置表单target=“newwin”
hivapdat6#
我的情况有点复杂,因为我最初的用户交互是
我让它正确工作的唯一方法是按照here建议的两个步骤:
tktrz96b7#