昨天在做js拷贝剪切板的功能时,遇到了yui的一个问题。因为这个功能是采用ZeroClipBoard才做的,它会在页面上放置一个透明的flash,当点击它时通过js来设置复制到剪切板的内容,关于ZeroClipBoard请参考相应的文档。
我需要的功能时复制页面中一个大的图片的地址。在测试的时候发现在ff下,这个flash的位置总是有问题,时而正常时而不正常,而在ie7下则没有这个问题,弄了半天才发现问题出在yui的onDOMReady,因为onDOMReady是表示页面所有的元素都加载完后的状态,这里不包含图片,我猜ff做了一些优化,这样有时图片还没有加载完,js已经计算flash的位置了,图片加载后,flash的位置就不正确了。
解决的办法就是对于设置ZeroClipBoard要在整个窗口都加载完全后才调用。
YAHOO.util.Event(window, "on", function() {
...
});
关于onAvailable, onContentReady, and onDOMReady文档是怎么写的:
onAvailable: onAvailable 指向一个单独的元素,当这个元素可用时执行此方法(此时执行 document.getElementById() ) — 但是你不能就确定此时该元素的所有的子元素都是可用的. onContentReady: 当你不仅仅关心该目标元素还关心它的子元素的时候,使用onContentReady 。该方法可以告诉你该目标元素以及其子元素都是可用的。 onDOMReady: 有一些DOM的脚本直到整个DOM被下载下来才能安全地执行onDomReady 可以让你获知整个文档已经被安全地下载下来,此时你可以使用脚本修改DOM文档。