2012-01-07 36 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