我有以下脚本在我的网站上生成大约4000行代码:
<script language="javascript" type="text/javascript">
<!--
var makemods2 = new Array;
<?php
$i = 0;
foreach ($makemods2 as $k=>$items) {
foreach ($items as $v) {
echo "makemods2[".$i++."] = new Array( '$k','".addslashes( $v->value )."','".addslashes( $v->text )."' );\n\t\t";
}
}
?>
//-->
</script>
<?php } ?>
这对页面加载非常重要,所以当然我想推迟解析。但是因为它不是外部的,所以我不能使用defer = defer。
我还阅读了谷歌的提示,提示这样的语法,我不知道如何编写上述代码:
<script language="javascript">
var node2 = document.createElement('script');
node2.type = 'text/javascript';
node2.async = true;
function switchDynaList2(listname,source,key,orig_key,orig_val){var list=eval("document.moduleForm."+listname);for(i in list.options.length){list.options[i]=null}i=0;for(x in source){if(source[x][0]==key){opt=new Option;opt.value=source[x][1];opt.text=source[x][2];if(orig_key==key&&orig_val==opt.value||i==0){opt.selected=true}list.options[i++]=opt}}list.length=i}
</script>
有什么建议吗?
答案 0 :(得分:0)
AJAX是要走的路,但是你似乎想避免我建议:
方法1
回到AJAX之前的一天以及页面加载状态的处理,我们过去常常将脚本标签放在body标签的末尾。这将允许解析主体内容,而不会被脚本执行延迟。然后,您需要做的就是将您的下拉列表默认为禁用,并在脚本执行完后启用它们。
注意:强>
方法2
将PHP代码移动到其自己的页面中,并使用脚本标记的src属性包含脚本。然后,您可以在脚本标记上使用defer属性。