zoukankan      html  css  js  c++  java
  • 实现here document的一些副产品

    近日打算利用注释实现here document,可惜不是这个浏览器就是那个浏览器给我制造麻烦。这次是火狐,它为了追求解析速度,做了一个作弊的特性,把javascript中的注释都去掉了!见下面实验:

    考虑到压缩时会去掉注释,这是更健壮的版本:

    经测试,也只有FF支持这混帐的特性。那么我们就集中精力兼容FF吧,这是外国人给出一个解决方案,利用E4X。

      var string = (<r><![CDATA[
    
         The text string goes here.  Since this is a XML CDATA section,
         stuff like <> work fine too, even if definitely invalid XML.
    
      ]]></r>).toString();
    

    接着下来要做的事是:检测浏览器是否支持E4X!

    学习E4X的好资料

    正如Douglas Crockford大神在Qcon里所说,New syntax is useless if you must support older browsers.

    New syntax === syntax errors

    为了防止其编译期的致命错误,我们只有使用eval,但对于大段的代码这是非法不妥的,因此E4X方案给我抛弃了。不过,最后还是给我找到解决方安案了……

    ぉまけ♪ 我的方法功能预览:

          window.onload = function(){
            var xml = dom.here('EOS',new Error /*
       <<EOS
    <?xml version="1.0" encoding="ISO8859-1" ?>
    <CATALOG>
      <CD>
        <TITLE>Empire Burlesque</TITLE>
        <ARTIST>Bob Dylan</ARTIST>
        <COUNTRY>USA</COUNTRY>
        <COMPANY>Columbia</COMPANY>
        <PRICE>10.90</PRICE>
        <YEAR>1985</YEAR>
      </CD>
    </CATALOG>
    EOS
     */ )
    
            var xlt = dom.here("xslt",new Error/*
    <<xslt
    
    <?xml version='1.0'?>
    <xsl:stylesheet version="1.0" >
    <xsl:output method='html' version='1.0' encoding='GB2312' indent='yes'/>
      <xsl:template match="/">
        <html>
          <body>
            <table border="2" >
              <tr bgcolor="yellow">
                <th>Title</th>
                <th>Artist</th>
              </tr>
              <xsl:for-each select="CATALOG/CD">
                <tr>
                  <td><xsl:value-of select="TITLE"/></td>
                <td><xsl:value-of select="ARTIST"/></td>
                </tr>
              </xsl:for-each>
            </table>
          </body>
        </html>
      </xsl:template>
    </xsl:stylesheet>
    
    xslt
     */
          )
            //将注释中的XML字段转换为一个XML文档!
            var xmldom = dom.xml(xml);//生成一个XML文档的包裹对象
            var xltdom = dom.xml(xlt).xml//生成一个XSLT文档       
            var result = xmldom.toDocument(xltdom)//转换一个HTML文档
            document.write((dom.xml.serialize(result)))//写入当前文档
            
    
  • 相关阅读:
    [SCOI2005]骑士精神
    [SCOI2005]超级格雷码
    [SDOI2013]淘金
    [SCOI2014]方伯伯的商场之旅
    P4317 花神的数论题
    RSA算法原理(一)
    PKI 笔记
    字符串解析运用-将字符串分解为多个整数,求各整数之和(华为oj)
    pycharm快捷键、常用设置、配置管理
    启动ipython notebook(jupyter)
  • 原文地址:https://www.cnblogs.com/rubylouvre/p/1740061.html
Copyright © 2011-2022 走看看