【问题标题】:Using document.write for fixed html将 document.write 用于固定的 html
【发布时间】:2009-06-02 08:39:31
【问题描述】:

我正在创建一个包含 100 个左右值的组合的网络表单。值是一样的。

表单可能有多个记录。因此,如果有 100 条记录,则有 10,000 行,从“下载”的角度来看,这似乎是非常错误的。

问题是:我想保持组合动态以保持数据库中的 id。

所以我想到了以下内容:

  .....
 <script>
      stupidCombo = "<option>a"+
                    "<option>b"+
                    ...
                    "<option>99zzz"+
                    "</select>";
 </script>
 ..... form here
 .... for each item in huge list do paint <table><tr> etc. etc 

 <td>
 <select name="comb-<%=id%>">
      <option selected><%=obj.val%>
      <script>document.write(stupidCombo);</script>
 </td>
... close form, table, html etc. 

我已经渲染它并且“看起来”很好。页面从 50k 行减少到 5k 行,并且选择是由客户端的 javascript 创建的。

我的问题是.....

这样好吗?

是否有任何风险?

在了解了大多数 javascript 框架的工作原理后,我借用了这个想法,但它们中的大多数工作在

元素上,而不仅仅是针对文档本身。

我的目标是 IE6,这是一个快速修复,明天早上必须投入生产(所以我不想在这上面花太多时间),但我不想为每个 IE6 编写 50,000 行求我帮忙。

谢谢

【问题讨论】:

    标签: javascript dom dynamic-data


    【解决方案1】:

    HTTP 压缩(mod_gzip 等)可以很好地压缩所有内容。

    如果你坚持使用document.write,你也必须使用JavaScript 来编写&lt;select&gt; 元素,因为在HTML 中你不能将&lt;script&gt; 放在&lt;select&gt; 中。

    另一种方法是将控件的一个副本发送到浏览器,然后在selectElement.cloneNode(true) 的帮助下复制它。

    【讨论】:

    • :-/ ...这就是我害怕的......问题是,如果我包含
    【解决方案2】:

    由 document.write 生成的 HTML 的工作方式与普通 HTML 相同,因此您的解决方案不存在任何技术问题。 (当然,这种解决方案只有在启用 javascript 时才有效)

    顺便说一下,对于选项数量多的列表,你可以看看"suggest box" component,它可以替代原生的选择框。

    【讨论】:

    • 是的,我不想添加框架,因为我只有几个小时来完成这个小表格,而且我不想添加其他东西。
    【解决方案3】:

    如果禁用 javascript,它显然将无法工作。

    【讨论】:

      【解决方案4】:

      Google 一直这样做(“document.write”)(Analytics/Adsense/...),所以我不明白为什么会有什么问题。

      您的解决方案看起来确实有点奇怪,因为&lt;script&gt; 标记位于&lt;select&gt; 标记内,因此您最好检查多个浏览器。毕竟,你永远不知道 IE 会做什么 :)

      【讨论】:

      • 这正是我所关心的 :S .. .我现在只需要 ie6,因为这是一个“紧急”修复(你知道只有在我工作的情况下才会发生这种情况,而世界上其他任何地方都不对?) :)
      【解决方案5】:

      更新。

      我按照我要求的方式做了,效果很好。 ie里面的js没有问题。

      但是……

      一旦表格被渲染,用户尝试做的下一件事情(总是用户做一些意想不到的事情)是......

      “好的,报告看起来不错。我将把它复制/粘贴到 MS-Excel 中,谢谢。”

      这不是我真正关心的事情。由用户决定,但结果是:excel电子表格死掉(或冻结几乎相同)!!!!因为 excel 中的 javascript 引擎不如 IE 中的那么好,所以组合需要很长时间才能复制,实际上它使 excel 应用程序无法使用。

      我不知道从 IE 到 Excel 的复制/粘贴非常好,以至于它实际上复制了所有生成的 html,而 Excel 也试图运行 javascript,但结果很糟糕。

      我会通过保留原始 html 再试一次,看看效果是否更好。

      :(

      【讨论】:

        猜你喜欢
        • 2017-06-26
        • 1970-01-01
        • 2021-05-12
        • 2010-09-08
        • 2011-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-02
        相关资源
        最近更新 更多