Framework Programming Overview
An HTML page can have one or more child frames, which are marked with <iframe> to display a separate HTML page. Framework programming here includes the self-control of the framework and the mutual access between frameworks, such as referencing JavaScript variables from one frame to another, calling functions within other frameworks, controlling the behavior of forms in another frame, and so on.
cross-references between frames
All frames in a page are provided as properties of the Window object in the form of a collection, for example: Window.frames represents a collection of all the frames within the page, similar to the form objects, linked objects, picture objects, and so on, and these collections are the properties of the document. Therefore, to refer to a child frame, you can use the following syntax:
window.frames["FrameName"];
Window.frames.frameName
Window.frames[index]
Where the window typeface can also be replaced or omitted with self, assuming that FrameName is the first frame in the page, the following is equivalent:
self.frames["FrameName"]
Self.frames[0]
Frames[0]
FrameName
Each frame corresponds to an HTML page, so the frame is also a standalone browser window that has all the properties of a window, a reference to a frame that is a reference to a Window object. With this Window object, you can easily manipulate the pages in it, such as using the Window.document object to write data to the page, using the Window.location property to change the page inside the frame, and so on.
The following are references to each other between different levels of frameworks:
1. Reference to the parent frame to the child frame
Knowing the above principle, referencing the child frame from the parent frame becomes very easy, namely:
window.frames["FrameName"];
This refers to a child frame named FrameName within the page. If you want to refer to a child frame within a child frame, you can do so by referring to a frame that is actually the nature of the Window object:
window.frames["FrameName"].frames["frameName2"];
This refers to a two-level child framework, and so on, you can implement a reference to a multi-tier framework.
2. Child frame to Parent frame reference
Each Window object has a parent attribute, which represents its parental frame. If the frame is already a top-level frame, window.parent also represents the framework itself.
3. The reference between the brothers frame
If two frames are a child of a framework, they are called sibling frameworks, and can be referenced through the parent framework, such as a page that includes 2 child frames:
Copy Code code as follows:
<frameset rows= "50%,50%" >
<frame src= "1.html" name= "frame1"/>
<frame src= "2.html" name= "frame2"/>
</frameset>
You can use the following statement to refer to frame2 in frame1:
self.parent.frames["Frame2"];
4. Mutual reference between different levels of frames
The hierarchy of the framework is for the top level framework. When levels are different, you can easily access each other by knowing the hierarchy and the hierarchy and name of the other frame, and by using the Window object properties referenced by the framework, for example:
self.parent.frames["ChildName"].frames["Targetframename"];
5. References to top-level frames
Like the Parent property, the Window object also has a top property. It represents a reference to the top-level framework, which can be used to determine whether a frame itself is a top-level frame, for example:
Copy Code code as follows:
Determine if this frame is a top-level frame
if (self==top) {
DoSomething
}
Change the load page of a frame
A reference to a frame is a reference to a Window object that, using the Location property of the Window object, can change the navigation of the frame, for example:
Window.frames[0].location= "1.html";
This redirects the page of the first frame in the page to 1.html, using this property to even update multiple frames with a single link.
Copy Code code as follows:
<frameset rows= "50%,50%" >
<frame src= "1.html" name= "frame1"/>
<frame src= "2.html" name= "frame2"/>
</frameset>
<!--somecode-->
<a href= "frame1.location= ' 3.html;frame2.location= ' 4.html '" onclick= "" >link</a>
<!--somecode-->
referencing JavaScript variables and functions within other frames
Before introducing techniques for referencing JavaScript variables and functions within other frameworks, look at the following code:
Copy Code code as follows:
<script language= "JavaScript" type= "Text/javascript" >
<!--
function Hello () {
Alert ("hello,ajax!");
}
Window.hello ();
-->
</script>
If this code is run, "hello,ajax!" will pop up. window, which is the result of performing the Hello () function. So why does hello () become a Window object method? Because all global variables and global functions defined within a page are members of the Window object. For example:
var a=1;
alert (WINDOW.A);
The pop-up dialog box is displayed as 1. The same principle of sharing variables and functions between different frames is to be invoked through the Window object.
For example: A product browsing page consists of two sub frames, and the left-hand side represents a link to the product category; When the user clicks the category link, the appropriate list of items is displayed on the right, and the user can click the "Buy" link next to the item to add the item to the cart.
In this case, you can use the navigation page on the left to store the goods that the user wants to buy, because when the user clicks the navigation link, it changes another page, the product display page, and the navigation page itself is unchanged, so the JavaScript variable is not lost and can be used to store global data. The principle of realization is as follows:
Assuming the left page is link.html, the right page is show.html and the page structure is as follows:
Copy Code code as follows:
<! DOCTYPE HTML Public "-//w3c//dtdhtml 4.0 transitional//en" >
<title> New Document </title>
<frameset cols= "20%,80%" >
<frame src= "link.html" name= "link"/>
<frame src= "show.html" name= "Show"/>
</frameset>
You can add a statement next to a product displayed in show.html:
<a href= "void (0)" onclick= "Self.parent.link.addToOrders (32068)" > Add Shopping Cart </a>
Link represents the navigation framework, the arrorders array is defined in the Link.html page to store the ID of the product, and the function addtoorders () is used to respond to the Click event of the "buy" link next to the product, and the parameter ID it receives indicates the ID of the product. The example is a product with an ID of 32068:
Copy Code code as follows:
<script language= "JavaScript" type= "Text/javascript" >
<!--
var arrorders=new Array ();
function Addtoorders (ID) {
Arrorders.push (ID);
}
-->
</script>
This way, you can use Arrorders to get all the items you want to buy on the checkout page or the Shopping Cart browsing page.
The framework can divide a page into functionally independent modules, each module is independent of each other, but can be linked through the reference of Window objects, is an important mechanism in web development.
The values of the controls within the page referencing the IFRAME page in this page can be written directly:
Copy Code code as follows:
function Test () {
var num = Window.iframename.inputtextname.value;
alert (num);
}
The iframe in this page can be written directly when it calls the JS code in the page:
<input value= "click" type= "button" onclick= "Window.parent.test ()"/>