2013-02-18 13 views
7

Tôi đang thử nghiệm trên this page và tôi không chắc chắn những gì tôi đang thiếu.Truy cập đối tượng tài liệu của khung bằng JavaScript

// Two frames on the page 
> document.getElementsByTagName("frame").length 
2 

// Same domain, so no security restrictions 
> document.getElementsByTagName("frame")[0].src 
"http://www.quackit.com/html/templates/frames/menu_1.html" 
> window.location.href 
"http://www.quackit.com/html/templates/frames/frames_example_1.html" 

// Can't access the document 
> document.getElementsByTagName("frame")[0].document 
undefined 

Có vẻ như điều này sẽ hiệu quả, vậy vấn đề là gì? Nó cần phải làm việc trong IE8, nhưng tôi cũng đang thử nghiệm trong Chrome (mới nhất ổn định).

+3

Bạn có thực sự sử dụng khung trong năm 2013 hoặc các iFram không? – adeneo

+1

Còn về 'document.getElementsByTagName (" frame ") [0] .contentDocument'? –

+0

'var frame = document.getElementsByTagName (" khung ") [0]; var frame_doc = frame.contentWindow.document || frame.contentDocument; '- sau đó sử dụng' frame_doc' làm tài liệu của khung – Ian

Trả lời

22

Cách all-around để nhận được nội dung của một khung là với một cái gì đó như thế này:

var theFrame = document.getElementsByTagName("frame")[0]; 
var theFrameDocument = theFrame.contentDocument || theFrame.contentWindow.document; 
var button = theFrameDocument.getElementById("mybutton"); 

Tuy nhiên, nó có thể để có được tài liệu một 's <frame> bằng cách sử dụng tên gọi của nó , như:

window.frames["frame_name"].document 

nếu HTML là:

<frame name="frame_name">...</frame> 
0

Bạn có thể sử dụng

parent.frame.location.href = ... 

đâu khung là tên/id của khung bạn muốn thay đổi.

Greets Marc