2012-01-16 98 views
1

我有一個頁面如何在另一個iframe中訪問iframe內容?

<div id="editForm_container"> 
<form id="imageForm" name="imageForm" enctype="multipart/form-data" target="hiddenFrame" method="post" action="test.php">     

    <label><strong>File Name</strong></label> 
    <input type="file" name="fileupload" id="fileupload" /><br /> 
    <input type="submit" name="submit_image" id="submit_image" /> 

</form> 
<iframe id="hiddenFrame" name="hiddenFrame"></iframe> 

和我加載這個頁面位於另一個頁面的另一個iframe和我寫這在我的JS文件

$("#imageFrame").load(function(){ 

this.imageFramecontent = $("#imageFrame").contents(); 
this.imageFramefields.fileField = this.imageFramecontent.find(":input[ name = 'fileupload' ]"); 
this.imageFrameform = this.imageFramecontent.find("form#imageForm"); 
this.hiddenFrame = this.imageFramecontent.find("iframe#hiddenFrame"); 

this.imageFramefields.fileField.change(function(){ 

    self.imageFrameform.submit(); 
    self.hiddenFrame.load(function(){ 

     alert(self.hiddenFrame.contents().html()); 
    });      
}); 

這將返回一個空警報。我如何獲得#hiddenFrame內容

+0

是你在同一個域下加載的iframe嗎?你有沒有注意到在JavaScript控制檯的任何錯誤? – fcalderan 2012-01-16 09:14:02

+0

是在同一個域上。控制檯返回沒有錯誤 – user1066679 2012-01-16 09:20:11

+0

@FabrizioCalderan請幫助解決此問題...請 – user1066679 2012-01-16 09:27:07

回答

2

你很近。 .contents()方法返回一組DOM元素,所以你需要指定你想返回html的元素。所以,你需要這樣一行:

hiddenFrame.contents().find('html').html(); 

我不能完全得到樣品流失你上面提供的代碼,但我設法得到它具有以下調整工作:

$("#imageFrame").load(function(){ 

    imageFramecontent = $("#imageFrame").contents(); 
    imageFrameupload = imageFramecontent.find(":input[ name = 'fileupload' ]"); 
    imageFrameform = imageFramecontent.find("form#imageForm"); 
    hiddenFrame = imageFramecontent.find("iframe#hiddenFrame"); 

    imageFrameupload.change(function(){ 

     hiddenFrame.load(function(){ 

      alert(hiddenFrame.contents().find('html').html()); 

     }); 
     imageFrameform.submit(); 

    }); 
}); 
+0

您是Genius Goran並感謝您的幫助 您的解決方案已解決了許多問題。謝謝 – user1066679 2012-01-18 06:34:24