代码改变世界

今天遇到一个神奇的问题--万能的alert出问题了,javascript怎么办?

2012-03-07 22:08  PHP淮北  阅读(8715)  评论(15编辑  收藏  举报

摘要:本文讨论关于js中万能的调试函数alert的长度问题

前言:

js中万能的调试工具alert可谓是屡试不爽的利器,不过今天在调试的时候意外发现一个很有意思的问题,在这里和大家一起讨论。

鉴于作者js菜鸟一枚,还望高手指点一二。

alert出问题了?

今天下午在把ajax返回的数据拼装成字符串,以便减少对DOM的多次插入问题的时候,alert拼装成的字符串的时候发现,字符串不完整,貌似被自动截断了,刚开始以为是js中的字符串难到还有长度限制,晚上回去的时候测试了一下,alert与字符串的问题。

测试代码:这里采用for循环1000次拼装成一个字符串,然后alert

<div id='count' width=100% height=30  style="background:red; font-size:30"></div>

	
    <script type="text/javascript">
	
			var html ="";
			for(i=0;i<10000;i++){
				html +=''+i+'abcdefghij'
			}
			alert(html)
			document.getElementById("count").innerHTML = html;
			
    </script>

 

alert测试的截图:

QQ截图20120307213114

可以看到这个字符串很明显被截断了:字符串最后几个是774abcdefghij775abcdefghij776abcdefghij777abcdef

也就是alert只显示了778次的循环值,

在看我这个这个拼接的字符串显示在页面的截图:

QQ截图20120307213829

字符串正好是循环10000次的字符串值,说明js中的字符串目前没有长度限制的。

那么alert字符串难道有字符串限制?

我们错了计算一下alert出了多长的字符串

10*777+ 6 +10 +90*2+ 678*3=10000字符

一个英文占一个字节,那么这个字符串的长度是10000字节/1024大约是10kb

但是为什么会是这样呢?

自己在百度谷歌搜索alert长度 却得到不到答案,也没有相关资源,

博客园里有很多人写js教程,希望js高手帮我解析一下,为什么万能的alert有长度限制?

本文标题有标题党嫌疑,但是为了解决这个问题,各位就见谅了

Technorati 标签: js,alert