通过运用 DHTML 的对象模型,不同窗口和框架里的内容可以通过脚本互相作用。但是,由于同一个浏览器可以同时在不同的浏览窗口或框架中显示不同的页面,为了保持数据的完整和信息的安全,就必须建立一种强制性的规则。
本文讲述在 DHTML 对象模型中这些规则是如何应用的,以及为何必须应用这些规则。在窗口间,对话框间,frameset、frame、iframe间,所有的关于交互作用的脚本写作的规则都是相同的。
在多数情况下,只有同一个域内的页面才能交互作用。比如,一个位于 www.microsoft.com/ 域中的页面可以自由地通过脚本影响 www.microsoft.com/ 域中的其他页面,但却不能作用于其他网域中的页面。
DHTML对象模型用 document.domain 属性来强制约束:只有拥有相同 domain 属性的页面能够自由地相互作用。(包括URL协议也必须相同,比如HTTP页面不可以与HTTPS的内容交互作用。)
当网页作者指定 document.domain 属性为域名的后半部分时,读写许可将可以扩展至二级域名(second-level domain )。例如:http://www.microsoft.com/ 上的一个页面可以把 document.domain 属性由初始的“www.microsoft.com”改为“microsoft.com”,就可以读写 home.microsoft.com 上的页面,或者以 microsoft.com 结尾的所有其他域中的页面,只要那些页面的 document.domain 属性值也设置为 microsoft.com 。因为只有名字以 microsoft.com 结尾的站点上的文档才能设置其 document.domain 属性为 microsoft.com ,所以确保了只有同一个服务提供者的页面才能互相提供权限并交互操作。document.domain 属性值不能比二级域名更短(比如“com”),因为这样会使权限超越于单一的服务提供者。比如:一个国际域名 www.microsoft.co.jp/ ,最大的操作权限是二级域名"microsoft.co.jp"(而不是"co.jp")。
由于让窗口或框架在任何的不同的域的 URl 间跳转很重要,这类操作总是被允许的。只有试图读写内容才会受到限制。例如:window.location 可以用来设置地址间的跳转,但是不能用它来读取在不同域上的地址。因为这会使一个页面知道浏览者去过哪些地方,而这会暴露浏览者的隐私。在不同的域间的页面应用的制约包括:
window.location 可以设置,但不能读取。
其他location对象 不可读写。
document.href 可以设置,但不能读取。
其他document属性 不可读写。
posted on 2007-01-15 09:07
JERRY P 阅读(156)
评论(0) 编辑 收藏