zoukankan      html  css  js  c++  java
  • JavaScript And Ajax(框架)

           框架能够在同一个浏览器窗口中显示多个 HTML 文档,可用于那些在页面上保持可见的导航控件(如带链接的菜单),还能让你能够独立的滚动内容框架,同时保持导航控件的位置固定不变。

           在现代网站设计里,框架被认为已经过时了。它有一系列的缺点:

    • 缺乏对各种屏幕尺寸和设备(如手机)的良好支持。
    • 浏览的 URL 反映了框架页面,但不能提供每个框架加载的文件的任何信息。书签和浏览器历史可能不能捕获当前页面的状态。
    • 框架在 XHTML1.1 中被废弃了

           在 ASP.NET 的开发里,使用母版页创建多栏页面要比使用框架的情况普遍的多。不过框架仍然有一些特殊的用途,比如把不同网站的现有文档放到同一个窗口里。框架和 JavaScript 相似,完全独立于 ASP.NET。它们只是 HTML 标准的一部分。

    框架导航

           框架不容易和 ASP.NET 页面整合。创建独立的框架很简单,只要创建一个引用要显示的 ASP.NET 页面并定义好位置的 HTML 框架页面即可。

           但开发人员通常期望一个框架的动作会在其他框架中显示结果,但这种交互并不简单。问题在于每个框架加载不同页面,在 Web 服务器的角度看来,它们是完全独立的。它们之间的交互只能通过浏览器的客户端脚本

           考虑下面的 HTML 页面,它定义了一个有两个框架的框架集:

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Frame Test</title>
    </head>
    <frameset framespacing="1" cols="200,*">
        <frame name="menu" src="Frame1.aspx" scrolling="no" />
        <frame name="content" src="" scrolling="auto" />
        <noframes>
            <body>
                <p>This page uses frames, but your browser doesn't support them.</p>
            </body>
        </noframes>
    </frameset>
    </html>

           左边框架显示 Frame1.aspx 页面。在这个页面里,你可以添加控件,用它们设置另一个框架内容。使用静态 HTML 很容易做到这一点,比如锚标签。例如,如果用户单击了下面的超链接,它会自动在右边的框架 content 里加载目标 NewPage.aspx:

    <a href="NewPage.aspx" target="content">Click Here</a>

           你也可以在某个 JavaScript 事件发生时设置 parent.[FrameName].location 属性来实现相同的效果

    <img src="ImgFile" onclick="parent.content.location='NewPage.aspx'">

           但是,如果要为响应服务器端事件,执行可编程的框架导航,这就变得更加复杂了。你可能要记录用户动作、检查安全凭证再执行框架导航。从服务器端执行这样的框架导航的唯一方式是写一段 JavaScript,当页面在客户端第一次加载时,由它告诉浏览器修改其他框架的位置

           例如,假设向左边的框架添加了按钮,单击时执行下面的服务器端代码。它定义 <script> 块并在页面中注册它,当页面回传时,脚本执行并把页面重定向到请求的页面:

    protected void Button1_Click(object sender, EventArgs e)
    {
        string url = "http://www.baidu.com";
        string frameScript = "<script type='text/javascript'>" +
            "window.parent.content.location='" + url + "';</script>";
        Page.ClientScript.RegisterStartupScript(this.GetType(), "FrameScript", frameScript);
    }

    image

    内联框架

           合并服务器端编程和类框架功能的一个办法是使用 <iframe> 标签(HTML 4.0 标准的一部分)。这是一个内联的或者说嵌入式的框架,可以位于 HTML 文档的任何位置。主文档和嵌入页面被看作完全独立的文档。

    <ifrmae src="page.aspx" width="40%" height="80"></iframe>

           <iframe> 标签的一个问题是不被所有浏览器支持。不过,你可以为那些不支持识别该标签的浏览器定义要显示的静态文本:

    <ifrmae src="page.aspx" width="40%" height="80">
    <p>See the content at <a href="page.aspx">page.aspx</a></p>
    </iframe>

           给页面添加 <iframe> 标签后,就可以在代码隐藏类中定义它以便通过添加 runat=”server” 特性和 ID 特性来访问它。ASP.NET 没有与之对应的控件类,所以 <iframe> 被表示为一个 HtmlGenericControl 控件。

           现在你可以随时设置 src 特性来重定向框架:

    IFrame1.Attributes["src"] = "page.aspx";

           当然,你不能够真正和嵌入页面的页面对象交互。实际上,这个页面甚至在这时还没有生成!相反,浏览器将单独请求被 src 特性引用的页面,然后在框架里显示它。不过,你可以使用各种技术在页面间传递信息,包括会话状态和查询字符串

  • 相关阅读:
    七、阿里巴巴中文站商品信息如何存放
    四、为什么要使用NOSQL NOT ONLY SQL
    二、数据库架构发展历程
    十三、负载均衡
    三、MySQL的扩展性瓶颈
    一、秒杀架构设计
    数据库概述
    五、传统RDBMS VS NOSQL
    PHP框架开发:三、MVC设计模式及本框架的实现方式
    PHP Iterator的使用
  • 原文地址:https://www.cnblogs.com/SkySoot/p/2825109.html
Copyright © 2011-2022 走看看