Reputation: 86230
I'm testing on this page, and I'm not sure what I'm missing.
// 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
It seems like this should work, so what's the problem? It needs to work in IE8, but I'm also testing in Chrome (newest stable).
Upvotes: 19
Views: 70312
Reputation: 50905
The all-around way to getting a frame's contents is with something like this:
var theFrame = document.getElementsByTagName("frame")[0];
var theFrameDocument = theFrame.contentDocument || theFrame.contentWindow.document;
var button = theFrameDocument.getElementById("mybutton");
However, it is possible to get a <frame>
's document by using its name, like:
window.frames["frame_name"].document
if the HTML were:
<frame name="frame_name">...</frame>
Upvotes: 39
Reputation: 2393
You could use
parent.frame.location.href = ...
Where frame is the name/id of the frame you d like to change.
Greets Marc
Upvotes: 2