多个window.open在php中使用JavaScript

时间:2014-12-06 17:53:25

标签: javascript php window.open

我正在尝试使用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>

";
}
?>

3 个答案:

答案 0 :(得分:1)

请记住以下几点:

  1. 您对openWindow()函数的2次调用将创建2个相同的表单以及它下面的javascript块。
  2. 由于您已将表单的ID硬编码为“TheForm”,因此它是非法的,因为元素ID在DOM中应该是唯一的。因此,document.getElementById(&#39; TheForm&#39;)含糊不清
  3. 您最好使用JavaScript打开网址,例如使用window.open而不是PHP函数调用
  4. 实施例: 由于要求的细节未知,即使您的初始代码有效,也很难建议正确的解决方案。我不建议尝试以编程方式打开多个新选项卡。一个原因是可用性/用户体验。另一个原因是没有标准的支持方法可以在各种浏览器和浏览器设置上使用它。 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)

我希望它会有所帮助。