请问哪位大侠做过webkit相关的,请帮忙看一下如何支持javascript的defer属性,这个属性主要是用于延迟执行的,比如下面这个页面脚本在webkit中执行的结果就不对:
<p><script type="text/javascript">var strResult = "pass"</script>
<script type="text/javascript" defer>var strResult = "fail"</script>
<script type="text/javascript">document.write(strResult)</script>
</p>
这三句Javascript语句第一句strResult 赋值"pass",第二句设置了defer属性应该延后执行,第三句输出strResult 的结果应该是Pass才对,最后执行第二句使strResult ="fail"。
所以页面最终看到的结果应该是"Pass",但Android浏览器通过webkit解析执行的结果却是fail,证明"defer"属性没有起到作用,请问在webkit源码中怎样修改才能支持defer属性?
参考页面:
http://218.206.177.209:8080/waptest/browser15/TC17.html

解决方案 »

  1.   

    再提供一些信息,我测试了IE是支持defer的,而firefox不支持。
      

  2.   

    我在webkit新版本中找到了答案,但Merge到Android系统中真不太容易,风险真大,现在真没有别的办法了。
      

  3.   

    写了一个简单的例子,你看看
    用firefox试验结果<html>
    <head>
    <title></title>
    <script type="text/javascript">var strResult = "pass"</script>
    <script type="text/javascript">
    function setValue(){
        var strResult = "fail"
        document.write(strResult);
    }
    window.setTimeout(setValue,2000);
    </script>
    <script type="text/javascript">document.write(strResult)</script>
    </head>
    <body>
    </body>
    </html>
      

  4.   

    看起来可以,但在webkit做替换比较有难度,HTMLScriptElement,ScriptElement,HTMLTokenizer.cpp,这些地方下手替换好像都有机会,真不太好搞。