2012-01-07 61 views
0

我使用的HTML/PHP和JavaScript的组合来打开启动一个Flash应用程序一个新的浏览器窗口。这工作正常,但现在大多数用户不期望窗口弹出窗口,并经常忘记允许弹出窗口。所以我认为一个好的解决方案可能是使用Jquery的对话框:http://jqueryui.com/demos/dialog/#defaultjQuery的对话框转换

我在这里寻找一些指导,因为这Flash应用程序需要很多东西传递给它如何与jQuery对话实现这一点。因此围绕这样做的一轮。

我首先创建HTML中的按钮有一堆东西掏出DB的:

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); 
} 

<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创建表单

最后,在PHP中进一步处理这一点,并调用JavaScript推出的Flash应用程序:

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

似乎动态创建一个表单,并张贴回服务器可能是不必要的。看起来你真的在做的是查找用户的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(); 
    }); 
}; 
+0

您的权利,我只需要用户id_hash,这是很容易得到。不知道为什么我走这条路。这看起来非常优雅。但由于引用(您可以在监视器按钮中看到)而失败。你确定这种报价方式吗?我从来没有见过这种方式。我会继续玩这个。 – Tom 2012-01-08 02:02:15

+0

尝试上面编辑的代码 – 2012-01-08 03:21:33

+0

上面的代码应该工作。 @NateBolam:几个建议:第2个''

' in the jQuery selector should be '
(缺少斜杠),并添加一个','到每个PHP回声结束。 @TomPepernic:你能告诉我们'flashapp/app.php'-request的结果吗? – scessor 2012-01-08 11:59:16