我正在创建一个包含100个左右值的组合的webform。值是相同的。
表单可能有多条记录。因此,如果有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,select由客户端的javascript创建。
我的问题是......
这可以吗?
是否涉及任何风险?
在了解了大多数javascript框架的工作原理之后,我借用了这个想法,但是大多数都在&lt; div&gt; 元素上工作,而不仅仅是文档本身。
我的目标是IE6,这是一个必须在明天早上投入生产的快速解决方案(所以我不想花太多时间在这上面)但是我不希望每个都有50,000行写入请求我是否可以提供帮助。
由于
答案 0 :(得分:3)
HTTP压缩(mod_gzip等)将很好地压缩所有这些。
如果您坚持document.write
,则必须使用JavaScript来编写<select>
元素,因为在HTML中,您不能将<script>
放入<select>
}。
另一种方法是将一个控件副本发送到浏览器,然后在selectElement.cloneNode(true)
的帮助下复制它。
答案 1 :(得分:1)
如果禁用javascript,它显然无效。
答案 2 :(得分:1)
document.write生成的HTML与普通的HTML一样,因此您的解决方案不存在任何技术问题。 (当然,这种解决方案仅在启用了javascript时才有效)
顺便说一句,对于包含大量选项的列表,您可以查看"suggest box" component,它可以替换原生选择框。
答案 3 :(得分:0)
谷歌一直在做这件事(“document.write”)(Analytics / Adsense / ...),所以我不明白为什么会出现任何问题。
您的解决方案看起来有点奇怪,因为<script>
标记位于<select>
标记内,因此您最好在多个浏览器中进行检查。毕竟,你永远不知道IE会做什么:)
答案 4 :(得分:0)
更新
我按照我的要求完成了它并且工作正常。内部的js没有问题,即。
但是...
表格渲染后,用户尝试做的下一件事(总是用户做出意想不到的事情)是......
“好的,报告看起来很好。我打算将它复制/粘贴到MS-Excel中谢谢。”
这是我真的不在乎的事情。取决于用户,但结果是:excel电子表格死(或冻结几乎相同)!!!!因为excel中的javascript引擎不如IE中那么好,所以组合需要永远复制,实际上它使excel应用程序无法使用。
我不知道从IE到Excel的复制/粘贴是如此之好,它实际上复制了所有生成的HTML和Excel试图运行javascript也有可怕的结果。
我将再次尝试保留原始html,看看是否效果更好。
:(