Javascript学习之窗口与框架

先恶补一下框架方面的知识

HTML Iframe 内联框架

用于在网页内显示网页。如下图:

Iframe   id:返回或设置iframeidname:设置或返回iframe的名称;srciframe中的文档的URL

<iframe src=\'#\'" /iframe>                   #URL指向隔离页面的位置

Heightwidth属性设置iframe的高度和宽度

Frameborder属性规定是否显示iframe周围的边框

 

Iframe可用作链接的目标(target

链接的target属性必须引用iframename属性:

例:

  
  
  
  
  1. <iframe src=”demo_iframe.html” name=”iframe_a”></iframe> 
  2.  
  3. <p><a href=http://www.w3school.com.cn target=”iframe_a”>www.w3school.com.cn</a></p> 

 

    在主内容区域的链接可以通过目标区域作用于iframe。要使用HTML加载iframe,可以使用<a>标签的target特性。不过很多网站使用的仍然是XHTML,如果开发人员要在XHTML Strict下使用iframe的话,设置target只能通过Javascript。这是因为XHTML Sctipt不支持target特性,开发人员必须自行设置目标才能更新iframe。(我将html标签前的文档类型改为严格,但是target属性仍然可以使用,就是说我测试和上面说的不同)

例1:

  
  
  
  
  1. <style type="text/css"> 
  2.     body { 
  3.         background-color:#fff; 
  4.         } 
  5.     iframe#icontent { 
  6.         float:right; 
  7.         border:1px solid black; 
  8.         width:350px; 
  9.         height:300px; 
  10.         margin-top:100px; 
  11.         } 
  12.     #nav { 
  13.         width:100px; 
  14.         } 
  15. </style> 
  16.  
  17.  
  18. <iframe src="iframe.html" name="icontent" id="icontent"></iframe> 
  19.     <h1>Main Content Area</h1> 
  20.     <div id="nav"> 
  21.     <h2> 
  22.     <a href="page1.html">Link 1</a> 
  23.     <a href="page2.html">Link 2</a> 
  24.     <a href="page3.html">Link 3</a> 
  25.     </h2> 
  26.     </div> 

 

Javascript代码(方法1):

  
  
  
  
  1. <script type="text/javascript"> 
  2.     window.onload = initLinks
  3.     function initLinks(){ 
  4.         for(var i=0;i<document.links;i++){ 
  5.             document.links[i].target = "icontent"; <!--当发现链接时,将target属性设置为字符串“icontent”-->
  6.             } 
  7.         } 
  8. </script> 

Javascript代码(方法2,使用Javascript加载iframe):

  
  
  
  
  1. <script type="text/javascript"> 
  2.     window.onload = initLinks
  3.     function initLinks(){ 
  4.         for(var i=0;i<document.links;i++){ 
  5.             document.links[i].target = setContent
  6.             } 
  7.         } 
  8.         function setContent(){ 
  9.                  document.getElementById("icontent").contentWindow.document.location.href = this.href; 
  10.                  return false; <!--返回false,告诉浏览器不要将href一并载入主窗口。所有功能都通过Javascript实现了,无需载入href-->
  11.                 } 
  12. </script> 

当iframe载入的文档的域名与主窗口不一样时,会报错

比如设置iframe的src=\'#\'" //www.baidu.com”,当点击链接时会报错:

即没有获取iframe的document的权限,这是浏览器的同源策略。不能获取不同域的文档对象。

例2;

此例能实现点击链接,框架中页面根据点击显示对应页面的效果:

HTML && CSS 代码

  
  
  
  
  1. <!--样式同上例-->
  2. <body> 
  3.     <iframe src="" name="icontent" id="icontent"></iframe> 
  4.     <h1>Main Content Area</h1> 
  5.     <div id="nav"> 
  6.     <h2> 
  7.     <a href="#">Link 1</a> 
  8.     <a href="#">Link 2</a> 
  9.     <a href="#">Link 3</a> 
  10.     </h2> 
  11.     </div> 
  12. </body> 

显示效果:

Javascript代码及注释:

  
  
  
  
  1. <script type="text/javascript"> 
  2.     window.onload = initLinks
  3.      
  4.     function initLinks(){ 
  5.         for(var i=0;i<document.links.length;i++){ 
  6.             document.links[i].onclick = writeContent
  7.             document.links[i].thisPage = i+1; 
  8.             } 
  9.         } 
  10.          
  11.     function writeContent(){ 
  12.         var newText = "<h1>You are now looking at Example " + this.thisPage + ".<\/h1>"; 
  13.          
  14.         document.getElementById("icontent").contentWindow.document.body.innerHTML = newText
  15.         return false; 
  16.         } 
  17.         <!--The contentWindow property returns the Window object generated by a frame or iframe element (through the window object, you can access the document object and then any one of the document's elements).--> 
  18.         <!--conntentWindow属性返回由frame或iframe元素产生的Window对象,你能得到document对象,然后就能操作所有的文档元素了--> 
  19. </script> 

效果如下图,点击Link2后的结果:

    只要窗口和iframe都来自同样的域,那么它们共享单个外部Javascript文件是很方便的。下面一个例子是通过iframe加载Javascript文件来演示它如何被主窗口调用的。

HTML代码:

  
  
  
  
  1. <body> 
  2. Today's Featured site: 
  3.     <img src="images/spacer.gif" width="400" height="75" id="adBanner" alt="banner" /> 
  4.     <iframe src="iframe.html" name="icontent" id="icontent"></iframe> 
  5.     <h1>Main Content Area</h1> 
  6.     <div id="nav"> 
  7.     <h2> 
  8.     <a href="#">Link 1</a> 
  9.     <a href="#">Link 2</a> 
  10.     <a href="#">Link 3</a> 
  11.     </h2> 
  12.     </div> 
  13. </body> 

iframe.html页面代码:

  
  
  
  
  1. <script type="text/javascript"> 
  2.     window.onload = initLinks
  3.     var bannerArray = new Array("images/redBanner.gif","images/greenBanner.gif","images/blueBanner.gif"); 
  4.      
  5.     function initLinks(){ 
  6.         for(var i=0;i<parent.document.links.length;i++){ 
  7.             parent.document.links[i].onclick = setBanner
  8.             } 
  9.         setBanner(); 
  10.         } 
  11.      
  12.     function setBanner(){ 
  13.         var randomNum = Math.floor( Math.random() * bannerArray.length ); <!--产生随机数字-->
  14.          
  15.         parent.document.getElementById("adBanner").src = bannerArray[randomNum]; 
  16.         return false; 
  17.         } 
  18. </script>
  19.  
  20. <body>
  21. Please load a page
  22. </body>

点击链接,主窗口中的图片颜色(其实是不同图像)会随机的发生变化。

 

你可能感兴趣的:(JavaScript,框架,iframe,十全十美)