用JS或jQuery訪問頁面內的iframe,兼容IE/FF


假設有兩個頁面,在相同域下.

index.html 文件內含有一個iframe:

XML/HTML代碼
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
  5. <title>頁面首頁</title>  
  6. </head>  
  7.   
  8. <body>  
  9. <iframe src="iframe.html" id="koyoz" height="0" width="0"></iframe>  
  10. </body>  
  11. </html>  

iframe.html 內容:

XML/HTML代碼
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
  5. <title>iframe.html</title>  
  6. </head>  
  7.   
  8. <body>  
  9. <div id="test">www.koyoz.com</div>  
  10. </body>  
  11. </html>  

 

1. 在index.html執行JS直接訪問:

JavaScript代碼
  1. document.getElementById('koyoz').contentWindow.document.getElementById('test').style.color='red'  

通過在index.html訪問ID名為'koyoz'的iframe頁面,并取得此iframe頁面內的ID為'test'的對象,并將其顏色設置為紅色.

此代碼已經測試通過,能支持IE/firefox .

2. 在index.html里面借助jQuery訪問:

JavaScript代碼
  1. $("#koyoz").contents().find("#test").css('color','red');  

此代碼的效果和JS直接訪問是一樣的,由于借助于jQuery框架,代碼就更短了.

 

補充一下:

用DOM方法與jquery方法結合的方式實現了

1.在父窗口中操作 選中IFRAME中的所有單選鈕
$(window.frames["iframe1"].document).find("input[@type='radio']").attr("checked","true");

2.在IFRAME中操作 選中父窗口中的所有單選鈕
$(window.parent.document).find("input[@type='radio']").attr("checked","true");

iframe框架的:<iframe src="test.html" id="iframe1" width="700" height="300" frameborder="0" scrolling="auto"></iframe>

IE7中測試通過