2013-02-18 11 views
7

Ich teste auf this page, und ich bin mir nicht sicher, was ich vermisse.Zugriff auf das Dokument-Objekt eines Frames mit 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 

Es scheint, als ob das funktionieren sollte, also was ist das Problem? Es muss im IE8 funktionieren, aber ich teste es auch in Chrome (neustem Stable).

+3

Verwenden Sie tatsächlich Frames im Jahr 2013 oder sind diese iFrames? – adeneo

+1

Was ist mit 'document.getElementsByTagName (" frame ") [0] .contentDocument'? –

+0

'var frame = document.getElementsByTagName (" frame ") [0]; var frame_doc = frame.contentWindow.document || frame.contentDocument; '- dann benutze' frame_doc' als das Dokument des Frames – Ian

Antwort

22

Der Allround-Weg ein Rahmen um den Inhalt zu bekommen, mit so etwas wie dies:

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

Allerdings ist es möglich, eine <frame> ‚s Dokument zu erhalten, indem unter Verwendung seines Namens wie:

window.frames["frame_name"].document 

, wenn die HTML waren:

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

könnten Sie

parent.frame.location.href = ... 

verwenden Wo Rahmen die Namen/id des Rahmens Sie ändern möchten.

Greets Marc

Verwandte Themen