那就把里面的JS和HTML分离出来好了,下面的代码在IE6.0下测试过没问题。
<html>
<head></head>
<body>
<span id="t1"></span>
<script type="text/javascript">
<!--
cache_html='<script type="text/javascript">function a(){alert(4);}</script><span onclick="a()">a</span>';var js = getjs(cache_html);
var html = cache_html.replace(/<script[^>]*>.*?<\/script>/gi, "");document.write(js);
document.getElementById("t1").innerHTML=html;function getjs(str)
{
var sRet = "";
var js = str.match(/<script[^>]*>.*?<\/script>/gi);
for( var i=0; i<js.length; i++ )
{
sRet += js[i];
}
return sRet;
}//-->
</script>
</body></html>

解决方案 »

  1.   

    这样试试:<html>
    <head></head>
    <body>
    <span id="t1"></span>
    <script type="text/javascript">
    <!--
    cache_html='<scr'
              +'ipt type="text/javascr'
              +'ipt">function a(){alert(4);}</scr'
              +'ipt><span onclick="a()">a</span>';
    document.getElementById("t1").innerHTML=cache_html;
    //-->
    </script>
    </body></html>
      

  2.   

    to krfstudio() :
    你的这种方法只有用 document.write才能实现。如下面的代码就不能用了。我不是一开始就加载的,如果用document.wirte,就会冲掉页面。
    <html>
    <head>
    <title>document</title>
    </head>
    <body>
    <span id="t1"></span>
    <span id="t2" onclick="a()">a</span>
    <script type="text/javascript">
    <!--
    document.getElementById("t1").innerHTML=getjs('<script type="text/javascript">function a(){alert(4);}</script><span>test</span>'); 
    function getjs(str)
    {
    var sRet = "";
    var js = str.match(/<script[^>]*>.*?<\/script>/gi);
    for( var i=0; i<js.length; i++ )
    {
    sRet += js[i];
    }
    return sRet;
    }
    //-->
    </script>
    </body></html>to myy() :
    谢谢了,不过我要的不是这种实现方法。
      

  3.   

    那就把原来的内容也重新写一次就好了,不过这样做前后的字体好象有变化(XP+IE6.0)。<html>
    <head></head>
    <body>
    <span id="t1"></span>
    <BR><span id="t2">Orignal</span>
    <BR><button onclick="insert()">插入HTML</button>
    <script type="text/javascript">
    <!--
    cache_html='<script type="text/javascript">function a(){alert(4);}</script><span onclick="a()">test</span>';function insert()
    {
    var js = "<html>" + document.documentElement.innerHTML + getjs(cache_html) + "</html>";
    var html = cache_html.replace(/<script[^>]*>.*?<\/script>/gi, ""); document.getElementById("t1").innerHTML=html; document.open("text/html", "replace");
    document.write(js);
    }function getjs(str)
    {
    var sRet = "";
    var js = str.match(/<script[^>]*>.*?<\/script>/gi);
    for( var i=0; i<js.length; i++ )
    {
    sRet += js[i];
    }
    return sRet;
    }//-->
    </script>
    </body></html>
      

  4.   

    写错一个地方,应该把 getjs 函数中的 document.getElementById("t1").innerHTML=html; 放到最前面。