再谈flash调用Javascript

Posted on 2006-10-23 星期一

Flash调用页面中的javascript函数在做一些flash操作页面DOM的应用的时候很有用,在flash actionscript中调用javascript中的函数方法有两个:

  • getURL(”javascript:checkit()”)
  • FSCommand(”checkit”,id);
  • 第一种:getURL()实际上的原理相当于HTML中<a href=”javascirpt:alert(’foobar’);”></a>的调用javascript的方式,相当于一个对本页的一个http请求。
    第二种:FSCommand(”checkit”,id);原理类似于HTML中<a href=”#” onclick=”checkit(1)” ></a>,相当于直接调用。

    这两种方法最大的不同就是前者向浏览器发送新的HTTP请求,后者没有。这样就带来了一个不可预知的问题,IE和firefox对于第一种的请求方式不同。在IE中浏览器会中断当前的所有请求,来响应来自flash getURL新的请求,这会带来什么问题呢?如果页面还没有下载完,正在下载的东东(图片,外部脚本,外部样式)都会停止,导致页面下载不全。这种情况在firefox中不会出现,因为处理方式不同,FF不会把这个当成一个新的HTTP请求,因为请求的地址是一段JS调用,(IE真的很垃圾,纯属个人观点,FFer万岁)。
    所以建议如果不能确定flash是在页面下载完成之后才进行JS调用,那么就使用FSCommand吧。
    getURL will terminate all of current http requests in internet explorer.FSCommand is ok, so use FSCommand instead of getURL


    No comments have been added to this post yet.

    留下评论

    (必需)

    (必需)


    Information for comment users
    Line and paragraph breaks are implemented automatically. Your e-mail address is never displayed. Please consider what you're posting.

    Use the buttons below to customise your comment.


    RSS feed for comments on this post | TrackBack URI