对网页嵌套方法的讨论


当如下文使用iframe标签嵌入内容时,如果被嵌系统使用到了表单认证,那么会出现表单认证可以工作却无法保存住登陆状态的问题。此问题仅出现于IE浏览器,FireFox没有这个问题。经研究,发现是IE浏览器有一个选项“是否允许第三方cookie”,打开这个选项有可能造成安全隐患——比如站点欺骗等,但可以使iframe里嵌入的系统正常工作。

追究其中的原因,则在于服务器端session的编号一般使用cookie来存储,被嵌入的系统如果不允许使用cookie,自然无法保存存储在session中的登陆状态。有的动态脚本运行平台在遇到不支持cookie的浏览器的时候,能自动将session编号附加在URL最后,就不会遇到这个问题。


有时候我们需要把网页进行嵌套,比如为了把不同层次的页面内容分开处理,或者是页面中有一部分需要不断刷新内容。

(刚刚得知用IFRAME标签可以实现页面内部嵌套页面的功能,需要查一下这个标签是哪一版标准中的定义,也许用这个东西会比Object更稳定。)

以往,我们都会把需要经常自动刷新的页面放入Frame的一部分,这样可以让整个页面中仅有一小部分在不断改变,而不必刷新整个页面,从而每次刷新更新的数据量小,不至于总让用户看到页面在刷新,以至于无法正常阅读内容的情况。

但Frame的结构比较死板,每一层Frame仅仅允许横分或竖分,所以为了得到让人满意的页面效果,总是难免对Frame进行多层嵌套,结果反而造成一个页面被分割成太多的小块,维护起来工作量变得比较大。

再者,当前对网页架构的设计主要是采用Table嵌套的方法,以求获得比Frame结构更自然的观感。如果这样Table嵌套而来的网页需要有一小部分进行刷新,在其中嵌入Frame来实现恐怕会带来混乱。这些都要求我们找到新的方法来实现网页之间的嵌套。

好在我们有Html标准中的Object元素。此元素主要用于向页面加入外部内容,比如浏览器插件、ActiveX控件,此元素还用来代替Applet和Embed元素的使用。Object元素得到了IE和Netscape浏览器的广泛支持(根据一本书的说法,至少IE4和NN6以上都没问题),所以浏览器的兼容性应该也不是大问题。

具体来说,我们可以在页面中书写如下语句来嵌入页面:
把如下代码加入<body>区域中: <object type="text/x-scriptlet" width="600" height="1000" data="http://www.163.com"> </object>

被嵌入的页面的功能等同于一个独立页面的功能,比如仍然可以使用JavaScript来打开新窗口(效果和在一般独立网页中JavaScript打开新窗口完全相同,而不会仅仅将新窗口打开在内嵌的部分),或者每隔一定时间进行刷新。具体说来,如果打算每20秒刷新一次内嵌页面,则可以在内嵌页面中这么写:

  1. 页面自动刷新:把如下代码加入<head>区域中<meta http-equiv="refresh" content="20">,其中20指每隔20秒刷新一次页面.
  2. 页面自动跳转:把如下代码加入<head>区域中<meta http-equiv="refresh" content="20;url=http://www.cn76.com">,其中20指隔20秒后跳转到http://www.cn76.com 页面。

更多的JavaScript应用技巧可以参考网址:http://www.cn76.com/js/javascript.html

GlossyBlue theme adapted by David Gilbert
Powered by PmWiki