0

我正在创建一个包含 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 框架的工作原理后,我借用了这个想法,但它们中的大多数工作在<div>元素上,而不仅仅是针对它本身的文档。

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

谢谢

4

5 回答 5

3

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

如果你坚持document.write,你也必须使用 JavaScript 来编写<select>元素,因为在 HTML 中你不能在<script>里面放<select>.

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

于 2009-06-02T09:01:09.527 回答
1

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

于 2009-06-02T08:46:53.207 回答
1

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

顺便说一句,对于选项数量较多的列表,您可以查看“建议框”组件,它可以替代原生选择框。

于 2009-06-02T08:47:51.783 回答
0

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

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

于 2009-06-02T08:47:10.117 回答
0

更新。

我已经按照我的要求做了,而且效果很好。ie里面的js没有问题。

但...

呈现表格后,用户尝试做的下一件事(总是用户做一些意想不到的事情)是..

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

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

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

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

:(

于 2009-06-09T17:08:22.450 回答