我正在尝试使用javascript从php打开多个新窗口(浏览器选项卡),但不知道为什么它总是只打开一个窗口,也没有找到任何解决方案。这是我的代码。
<?php
openWindow("name1","id1");
openWindow("name2","id2");
function openWindow($name,$id)
{
echo "name = $name and Id = $id";
echo "
<form id=$name method='post' action='studentDetails.php' target='TheWindow'>
<input type='hidden' name='name' value=$name />
<input type='hidden' name='id' value=$id />
</form>
<script type='text/javascript'>
window.open('', 'TheWindow');
document.getElementById(<?php echo $name;?>).submit();
</script>
";
}
?>
答案 0 :(得分:1)
请记住以下几点:
实施例: 由于要求的细节未知,即使您的初始代码有效,也很难建议正确的解决方案。我不建议尝试以编程方式打开多个新选项卡。一个原因是可用性/用户体验。另一个原因是没有标准的支持方法可以在各种浏览器和浏览器设置上使用它。 css3建议在新标签页中打开。
您可能需要考虑的2个解决方案: a)打开多个页面作为弹出窗口 b)为每个学生打开一个包含多个记录的单页 根据您的要求,您需要做出决定。对于大多数情况,选项将是合适的。
选项(a)的样本:
test.php的
<html>
<head>
</head>
<body>
<form id='studentform' method='post' action='studentDetails.php' target="_blank">
<input type='hidden' name='name' id="name" value="" />
<input type='hidden' name='id' id="id" value="" />
</form>
<script type='text/javascript'>
function openWindows(){
window.open("http://localhost/test/studentDetails/studentDetails.php?name=john&id=1", "", "width=600, height=300");
window.open("http://localhost/test/studentDetails/studentDetails.php?name=mary&id=2", "", "width=600, height=300");
}
openWindows();
</script>
</body>
</html>
studentDetails.php
<?php
function getParam($name,$method){
if($method=="POST")
return isset($_POST[$name])?$_POST[$name]:"";
else
return isset($_GET[$name])?$_GET[$name]:"";
}
$name = getParam("name", "GET");
$id = getParam("id", "GET");
if($name && $id)
echo("name = $name and Id = $id");
else
echo("Invalid student info");
?>
答案 1 :(得分:1)
这是工作代码
<?php
openWindow("name1","Id1");
openWindow("name2","Id2");
function openWindow($name,$studentId)
{
echo "
<form id='$name' method='post' action='studentDetails.php' target='_blank'>
<input type='hidden' name='name' value=$name />
<input type='hidden' name='studentId' value=$studentId />
</form>
<script type='text/javascript'>
document.getElementById('$name').submit();
</script>
";
}
?>
答案 2 :(得分:0)
如果您在脚本中指定了window.open()
方法的另一个调用,那么应该让它运行起来:
<script type='text/javascript'>
window.open('', 'TheWindow');
window.open();
document.getElementById('TheForm').submit();
</script>
然后,您可以提供所需的参数:window.open(url, name, specs, replace)
我希望它会有所帮助。