jquery对话框转换

时间:2012-01-07 19:25:35

标签: jquery html flash jquery-dialog

我使用html / php和javascript的组合打开一个启动Flash应用程序的新浏览器窗口。这很好用,但是现在大多数用户不希望窗口弹出窗口并且经常忘记允许弹出窗口。所以我认为一个好的解决方案可能是使用Jquery的对话框:http://jqueryui.com/demos/dialog/#default

我正在寻找关于如何使用jquery对话框实现此功能的一些指导,因为这个Flash应用程序需要传递很多东西。因此,关于这样做的方式。

我首先在html中创建一个按钮,其中包含从数据库中提取的一堆内容:

<button id="monitor" onClick='startmonitor("<?php echo htmlentities($_SERVER['REQUEST_URI']); ?>","<?php echo $result_cameras[$i]["camera_hash"]; ?>","<?php echo $result_cameras[$i]["camera_name"]; ?>","<?php echo $camera_quality_flash; ?>")'>Monitor</button>

然后我使用按钮中的传递参数在javascript中创建一个表单:

 function startmonitor(to, camerahash, cameraname, cameraflashquality)
 {
    var myForm = document.createElement("form");
    myForm.method = "post";
    myForm.action = to;

    var myInput = document.createElement("input");
    myInput.name="video";
    myInput.value="Monitor";
    myForm.appendChild(myInput);

    myInput = document.createElement("input");
    myInput.name="camera_hash";
    myInput.value=camerahash;
    myForm.appendChild(myInput);

    myInput = document.createElement("input");
    myInput.name="camera_name";
    myInput.value=cameraname;
    myForm.appendChild(myInput);

    myInput = document.createElement("input");
    myInput.name="camera_quality_flash";
    myInput.value=cameraflashquality;
    myForm.appendChild(myInput);

    document.body.appendChild(myForm);
    myForm.submit();
    document.body.removeChild(myForm);
 }

最后在php中进一步处理此问题并调用javascript启动flash app:

if (isset($_POST['video'])) {
    //get user hash for monitor app
    $query_user_hash = "SELECT id_hash FROM #__users WHERE user_id=".$user->id;
    $db->setQuery($query_user_hash);
    $id_hash = $db->loadResult();

    $camera_hash = check_input($_POST['camera_hash']);
    $camera_name = check_input($_POST['camera_name']);
    $camera_quality_flash = check_input($_POST['camera_quality_flash']);

    echo '<script type="text/javascript">
        window.open("flashapp/app.php?user='.$id_hash.'&camera='.$camera_hash.'&name='.$camera_name.'&quality='.$camera_quality_flash.'", "Flash_monitor", "location=0,menubar=0,status=0,scrollbars=0,width=360,height=405")
    </script>';
}

甚至不确定从哪里开始。我是否尝试使用jquery对话框window.open?在这种情况下,我不确定如何传递相同的参数?或者有更好的方法来解决这个问题。

1 个答案:

答案 0 :(得分:1)

似乎动态创建表单并回发到服务器可能是不必要的。所有看起来你真正在做的就是查找用户的id_hash。如果主页上有可用的,则不需要额外的服务器端调用。然后你可以做这样的事情:

<button id="monitor" onclick="startMonitor('<?php echo $result_cameras[$i]["camera_hash"]; ?>', '<?php echo $result_cameras[$i]["camera_name"]; ?>');">Monitor</button>

var startMonitor = function(cameraHash, cameraName) {
    var url = ['flashapp/app.php?user=<?php echo $user_id_hash; ?>', 'camera=' + cameraHash, 'name=' + cameraName, 'quality=<?php echo $camera_quality_flash; ?>'].join('&');
    $('<div></div>').load(url, function() {
        $(this).dialog();
    });
};