当JQuery函数尝试在firefox中打开新页面时,会显示消息“firefox阻止此站点打开弹出窗口”。据我所知,基于Is window,open() impossible in firefox和Links to local page do not work,这是一个本地问题,只是因为我试图从“localhost”访问我服务器中的文件。但是,当这个站点真正起作用时,其他人不会因为他们没有访问自己的服务器而遇到同样的问题。这种解释有意义吗?或者我错了,我必须处理这个问题?顺便说一句,因为我只改变了firefox的首选项,所以很容易在本地解决这个问题。我的担忧与其他人访问我的网站有关。
供参考,这是我的代码:
<?php
$theUsernameDaniel = "danielcajueiro";
$theUsernameMarcelo = "marcelopapini";
?>
<html>
<head>
<meta charset="utf-8" />
<title>ControllingHiperlinks</title>
<script src="http://code.jquery.com/jquery-1.9.1.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
$("a.peoplePage").click(function(event) {
event.preventDefault();
var theUsername = $(this).data("username");
// alert(theUsername);
// event.preventDefault();
$.post('callmpeoplepage.php', {theUsername: theUsername}, function(data) {
var thePeoplePage = window.open("about:blank");
thePeoplePage.document.write(data);
});
});
});
</script>
</head>
<body>
<a class="peoplePage" data-username="<?php echo $theUsernameDaniel ?>" href=""> Daniel Cajueiro</a>
<a class="peoplePage" data-username="<?php echo $theUsernameMarcelo ?>" href="">Marcelo Cajueiro</a>
</body>
</html>
callmpeoplepage.php是
<?php
$theUsername = $_POST['theUsername'];
echo $theUsername;
?>
答案 0 :(得分:1)
除响应直接用户操作外,您无法打开弹出窗口。由于你延迟window.open直到帖子回复结束,它不再直接响应用户的点击,因此弹出窗口阻止程序将停止它。
每个人都会遇到这种情况,您无法改变行为。你可以尝试在提交帖子之前打开窗口,只在帖子返回时填写 - 只需将window.open
行向上移动到$.post
之前
答案 1 :(得分:1)
你可以这样写
let win = window.open("about:blank", "_blank");
$.post('callmpeoplepage.php', {theUsername: theUsername}, function(data) {
// if data is a valid url
win.location.href = data;
});