解决方案 »

  1.   

    没听懂什么意思,所有标签都可以呀,只要让页面渲染一下就行。比如你这个例子:var a = document.createElement('div');
    a.outerHTML = $html;
    document.getElementsByTagName('div')[0].appendChild(a);
      

  2.   

    非常感谢你的指点,你说的outerHTML方法确实就是我要想要的,但是,我试了一下,问题又来了:
    outerHTML不能正确解析含有逗号,双引号,换行等字符的html,有时也会直接输出原html代码。
    Teach me again,  please.
      

  3.   

    换行可以用pre标签,双引号不能正确显示是不是你编码过&字符了,变成了",而不是双引号的实体"var a = document.createElement('pre');
    a.innerHTML = $html;
    document.getElementsByTagName('div')[0].appendChild(a);
    用innerHTML替换outerHTML,outerHTML ie only
      

  4.   


    function loadContent(){
        if(document.getElementById("blog-content")!=null){
          //document.getElementById("blog-content").innerHTML="$html";          //这行是正式代码      //document.getElementById("blog-content").innerHTML="&lt;h2&gt;bbb&lt;/h2&gt;";   //来至$html ,输出<h2>bbb</h2>
         // document.getElementById("blog-content").innerHTML="<p>haha</p>";                       //自己给定的html,输出正常 haha
          //document.getElementById("blog-content").outerHTML="<p>hello,world\"'中国</p><br><p>haha</p>"; //手动给定,输出正常,但双引号要这转义\"才行
        }上述代码是browser查看源码中看到的,三行语句,我分别试了一下。如果$html中有双引号 或换行,会提示unterminated string literal错误,
    我在想是不是要把源html当中的特殊字符repalce成能正确解析的。不过这好麻烦。
      

  5.   

    感谢版主大大指点,我现在的做法是手工转码,但是遇到正文和属性都带有双引号时,这样也行不通,比如下面这段:
    ...
    <p>she said, "I hate you".</p><img src="./p001.jpg">
    ...
    replace 双引号成&quot;导至后面的img无法正确解析,所以这也不是好办法。
    好了,我把我的问题再归纳一下:怎样把含有双引号等特殊字符的字符串赋给一个变量?
    由于服务端返回的html文本字符串中有一些特殊字符(比如双引号,分号,换行等),直接赋值给一个变量会引发unterminated string literal等语法错误。
    请问有没有什么办法可以包裹wrap这些字符串再进行赋值,而不是replace这些特殊字符成可识别的编码?
      

  6.   

    比如这句
    <p>she said, "I hate you".</p><img src="./p001.jpg">
    经转义后
    <p>she said, &quot;I hate you&quot;.</p><img src=&quot;./p001.jpg&quot;>
    后面img找不到图片,src="" 属性后的引号转义是多余的,这可咋办,这个问题困扰多时了。
      

  7.   

    说明一下,html代码是down生成的,没办法干预使其转义,在线等。。
      

  8.   

    终于解决了,我是这样做的,用单引号包裹html字符串变量,类似这样
    document.getElementById("blog-content").innerHTML='$html';
    $html里面的单引号,换行等事先转义好再返回客户端,这样就不会出错。
    感谢诸位热心解答。