我尝试在新窗口/标签中打开表单提交的结果。在用户选择下拉列表中的选项后执行提交。
$(function() {
$('select').change(function() {
$(this).parents('form').submit();
});
});
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
</head>
<body>
<form action="/result.html" method="post" target="_blank">
<select>
<option val="1">Opt 1</option>
<option val="2">Opt 2</option>
</select>
<input type="submit" value="Submit" style="display: none;">
</form>
</body>
</html>
经过一些研究后我使用了这个实现。新窗口/提交不会自动执行。相反,我在交互后执行提交(在选择字段中更改)。此外,其间没有其他事件(例如ajax调用)。根据我的理解:脚本从trusted event打开新窗口,弹出窗口阻止程序不应该阻止这一点。但这正是发生的事情。
即使是上面的简单实现,也会触发Google Chrome(Mac,63.0)和Firefox(57.0.3)中的弹出窗口。
现在没有办法在新窗口中打开表单结果,而不是在白名单上?