javascript - 在 php 中使用 JavaScript 进行多个 window.open

标签 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>

";
}
?>

最佳答案

请记住以下几点:

  1. 对 openWindow() 函数的 2 次调用将创建 2 个相同的表单及其下面的 javascript block 。
  2. 由于您已将表单的 id 硬编码为“TheForm”,因此这是非法的,因为元素 id 在 DOM 中应该是唯一的。因此 document.getElementById('TheForm') 是不明确的
  3. 您最好使用 JavaScript 打开 URL,例如使用 window.open 而不是 PHP 函数调用

示例: 由于需求的详细信息未知,因此即使您的初始代码可以运行,也很难提出正确的解决方案。我不建议尝试以编程方式打开多个新选项卡。原因之一是可用性/用户体验。另一个原因是没有标准支持的方法来使其在各种浏览器和浏览器设置上运行。有在新选项卡中打开的 css3 建议。

您可能需要考虑的 2 个解决方案: a) 以弹出窗口的形式打开多个页面 b) 为每个学生打开一个包含多条记录的页面 根据您的追求,您需要做出决定。对于大多数情况,选项 be 是合适的。

选项(a)的示例:

测试.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");
?>

关于javascript - 在 php 中使用 JavaScript 进行多个 window.open,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27334611/

相关文章:

javascript - AJAX 请求未被识别

php - 谷歌地理编码 API 错误 : OVER QUERY LIMIT

javascript - 当请求另一个 window.open 时 window.close 当前窗口

PHP Make 手机验证字段

javascript - 改变window.open的 Action

c# - 在 WebView 中调用 window.open JavaScript

javascript - 尝试学习 addEventListener 但我的代码不起作用

javascript - jQuery srollTop 难题

javascript - 如何使用 ajax 自动刷新页面的一部分,而无需手动调用 javascript 中的函数?

php - 为什么 Laravel 不返回特定用户的关系记录(它返回所有用户的记录)?