2.5.2 队伍里的骨干—— mainframe 页面
在生成 HTML 阶段, mainframe 页面会两次使用模板:第一次是生成页面主体中包含框架与框架集部分的 HTML 代码,这时如果用户选择使用工具栏,那么会采用 framesettaskbar 作为模板(这里模板是指 viewerfiles 下同名的 templ 模板文件,比如 framesettaskbar 指的是 viewerfiles 文件夹下的 framesettaskbar.templ 文件,以下同),否则会使用 framesetnotaskbar 模板;而另一次则是利用 mainframe 模板生成整个 mainframe 页面的内容。
我们可以利用 IE 中的“页面” -> “查看源文件”的方式查看 mainframe 页面的 HTML 代码,这里要注意的是,如果您使用的是网页中上下文菜单里的“查看源文件”,您看到的是这个子框架内的代码,而不是整个页面的代码。
我们可以看到,作为所有子框架的祖先框架, mainframe 定义了大量的变量和函数,来供自身和各个子框架调用。由于 mainframe 是整个框架中唯一一个读取网页布局( MgWebLayout )的页面,所以跟网页布局有关的所有变量都被放置在这个页面中。这里面一些比较重要的变量有:
1. 表示当前布局的变量,如 hasToolbar 、 hasStatusBar 、 hasTaskPane 和 hasTaskbar 等,这些变量表示了当前网页布局中是否包含某一元素。这样,我们可以在界面上作出某些变动前先通过这些变量确定当前页面的布局状况。但是,由于实际是否显示某一页面元素取决于页面的框架是如何定义的,所以这些变量并不实际决定是否显示某一元素,而只是提供相关信息。所以,我们不应该改变这些变量的值。
2. 表示各元素中内容的变量,如表示页面中命令的 commands 、表示工具栏中各项的 toolbarItems 、表示任务栏中各项的 taskItems 和表示上下文菜单中各项的 ctxMenuItems 。这些变量都是数组,很多子框架就是通过访问 mainframe 中的这些变量来初始化自身的。比如,工具栏 tbFrame 在初始化的时候,会通过 parent.toolbarItems 来获取工具栏中包含多少工具栏项。
3. 表示资源的变量,如表示在任务窗格中默认显示的主页地址的 homePage 、当前网页布局的 webLayout 、当前地图定义的 mapDefinition
除此之外,网页中各框架的名字可以用来直接访问该框架,如 tbFrame