2011-08-01 73 views
0

我在iframe中有一個自動生成的照片庫,它可以改變表單選擇中所包含圖像的分類。這個想法是通過獲取url並通過php將其傳遞到下一頁來找到他們選擇的圖像。我可以從iframe中獲取url,但是當我嘗試將值傳遞給下一頁時,我得到了about:blank。當我使用來自隱藏表單字段值的警報時,它也會在同一頁上執行此操作。我認爲這是隱藏表單值的問題。將iframe url傳遞到下一頁

因此,如果您從隱藏窗體值的警報下面加載頁面將會出現空白。然後我有2個按鈕,1處理表單並顯示:下一頁上的空白;另一個在分配隱藏字段值(這是正確的值)之前從函數值獲取url。一旦將它分配給隱藏字段,url值永遠不會使其生效。那麼這是不可能的,或者我做錯了嗎?

更新我發現值正確地通過IE瀏覽器,它只是Firefox不會因爲某些原因將值傳遞到下一頁。請有人告訴我爲什麼這是和有一個跨瀏覽器的解決方案?

index.php 
<html> 
<head> 
<script type="text/javascript" runat="server"> 
//this function gets url from iframe on same domain 
    function framehref(frame,url){ 
    if(typeof(frame)=='string'){//find iframe (will not find a frame): 
    frame=document.getElementById(frame); 
} 
    if(frame.tagName=='IFRAME'){//iframe: 
    if(url==undefined){ return(frame.contentWindow.document.location);} 
    frame.contentWindow.document.location.href=url; 
}else{//frame: 
    if(url==undefined){ return(frame.document.location);} 
    frame.document.location.href=url; 
} 
} 
</script> 
</head> 
<body> 
<form method="post" action="modify.php" name="step1" border="0"><br/> 


<iframe src="http://localhost/iframemain.php/" id="myIframe" name="myIframe"  width="510" height="400"></iframe> 



<div id="mydiv"></div> 


<input type="submit" value="nextpage!"> 
<input type="button" value="get url!" onclick="alert (framehref('myIframe'));" > 

<script type="text/javascript" runat="server"> 
var image = document.createElement("input"); 
image.setAttribute("type", "hidden"); 
image.setAttribute("name", "url"); 
image.setAttribute("id","url"); 
image.setAttribute("value", framehref("myIframe")); 
document.getElementById("mydiv").appendChild(image); 

alert (document.getElementById("url").value) 
</script> 
</form> 
</body> 
</html> 

這裏是modify.php

<?php 
$url = $_REQUEST['url'] ; 
?> 
<html> 
<head> 
</head> 
<body> 

<?php 
$url = $_POST['url'] ; 
echo "<b>url:</b> $url"?> 
</body> 
</html> 
+0

如果url來自不同於父頁面的域,則無法訪問iframe的url。此外iframe不是表格內的有效標籤 – mplungjan

+0

感謝您的輸入,我不知道窗體內部的iframe標籤無效,但在將iframe放置在窗體外部之後,我仍然得到相同的結果。並且YES iframe網址位於同一個域上。 – matt

回答

0

你試過:

if(url==undefined){ return(frame.contentWindow.document.src);} 

或者基本上與xxx.document.srcxxx.document.location,而不是試圖location.href它?

+0

那麼我試圖切換與xx.document.src和xxx.document.location並得到相同的結果。它總是說:一旦URL值被放入隱藏的表單域中就會顯示空白。 URL提取功能很好,值始終是正確的,直到它被放置到窗體中。這就是我試圖在我的例子中展示的東西。我沒有得到未定義的錯誤,值顯示大約:當它應該顯示http:// localhost/iframemain.php或http:// localhost/images/yadayada.jpg時,它們在網站中查看的任何頁面。感謝您的輸入:) – matt