在跨越站点,并且同域的情况下,若将一边的事件订阅在另一边处理则要注意很多隐秘、微妙的问题。首先是订阅方式,若采用 prototype 库中的 Observer 方式来订阅,它内生会把 event 作为参数传递到方法中;若采用 event property、attachevent 方式订阅,对于 ie 则需要使用 window.event 全局变量,对于 ff 则会将 event 作为参数传入。在同域跨站的情况下,对于 ff 应该不会有太大的问题(还需要试验一下),因为它将 event 作为参数传递,同域跨站的情况是可以使用另一站点对象的引用的。但是对于 ie 则不行了,因为它是通过 window.event 全局变量来访问的,所以在另一站点中 event 变量会为空的。若是在使用了 prototype,则会将事情搞得更加的微妙。因为按照 prototype 的源码,它在 Observer 事件时,对于处理函数,它会在 apply 时,将 event 变量作为参数传递给处理函数,以便屏蔽掉 ie 和 ff 兼容性的问题,但是由于在 prototype 的源码中,它使用的是 window.event,所以传递给处理函数的 event 应该还是一个 null。
所以对于同域跨越站点的事件处理时,应该做到一下两点:
发表于 @ 2006年11月15日 09:09:00|评论(loading...)|编辑