模态窗口对字符串参数的巨无聊限制
来源:互联网 发布:网络语肥皂是什么意思 编辑:程序博客网 时间:2024/05/21 12:11
由于IE在对象及对象引用的回收上有不少的问题,我一般很忌讳在不同的窗口和Frame之间传递脚本对象。一般情况下我都是用简单类型来传递参数,比如数字和字符串。对于复杂对象先序列化字符串再在窗口和Frame之间传递,一直以来都挺好的,也没有什么遇到什么问题。
前几天Tester Team发现一个非常诡异的bug,在模态窗口里的显示的一些数据,当数据量大了后就会出现不确定的错误。开始以为是程序逻辑上的问题,后来调试了半天,发现原来是Modal Dialog的一个特性搞出来的。对于showModalDialog,其参数列表为:
Syntax
vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures])
Parameters sURL Required. String that specifies the URL of the document to load and display. vArguments Optional. Variant that specifies the arguments to use when displaying the document. Use this parameter to pass a value of any type, including an array of values. The dialog box can extract the values passed by the caller from thedialogArguments property of the window object.
MSDN的下面还有一个让人巨郁闷的remark:(
The vArguments parameter can be referenced within the modal dialog box using the dialogArguments property of the window object. If the vArguments parameter is defined as a string, the maximum string length that can be passed to the modal dialog box is 4096 characters; longer strings are truncated.
这下知道了,原来是字符串参数太长,被IE自动截断了。
问题是清楚了,可是微软对模态窗口的这个限制是不是太无聊了点啊?不知道微软在搞什么飞机。
解决这个问题,如果按MSDN说的,我们把vArguments弄成object或array就行了。那么对于参数传出和传入的地方都需要修改"接口"的代码,好麻烦的说。那么能不能让字符串参数突破vArguments的4096个字符的限制呢?
其实对于一个字符串,只要我们把它包装(有点像C#的Boxing了)成string object,就可以不受vArguments长度的限制了,而且在Modal Dialog中处理字符串的接口函数不需要做任何的修改。比如我们要传递一个5001个字符的字符串,示例如下:
就这样使用一个简单的 new String(str+'b') 就完全突破限制了。
前几天Tester Team发现一个非常诡异的bug,在模态窗口里的显示的一些数据,当数据量大了后就会出现不确定的错误。开始以为是程序逻辑上的问题,后来调试了半天,发现原来是Modal Dialog的一个特性搞出来的。对于showModalDialog,其参数列表为:
Syntax
vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures])
Parameters sURL Required. String that specifies the URL of the document to load and display. vArguments Optional. Variant that specifies the arguments to use when displaying the document. Use this parameter to pass a value of any type, including an array of values. The dialog box can extract the values passed by the caller from the
MSDN的下面还有一个让人巨郁闷的remark:(
The vArguments parameter can be referenced within the modal dialog box using the dialogArguments property of the window object. If the vArguments parameter is defined as a string, the maximum string length that can be passed to the modal dialog box is 4096 characters; longer strings are truncated.
这下知道了,原来是字符串参数太长,被IE自动截断了。
问题是清楚了,可是微软对模态窗口的这个限制是不是太无聊了点啊?不知道微软在搞什么飞机。
解决这个问题,如果按MSDN说的,我们把vArguments弄成object或array就行了。那么对于参数传出和传入的地方都需要修改"接口"的代码,好麻烦的说。那么能不能让字符串参数突破vArguments的4096个字符的限制呢?
其实对于一个字符串,只要我们把它包装(有点像C#的Boxing了)成string object,就可以不受vArguments长度的限制了,而且在Modal Dialog中处理字符串的接口函数不需要做任何的修改。比如我们要传递一个5001个字符的字符串,示例如下:
<button onclick="pop()">pop</button>
<script language="javascript">
function pop()
{
var str = '';
for ( var i=0 ; i < 5000 ; ++i )
{
str += 'a';
}
// alert(str.length);
window.showModalDialog('pop.htm', new String(str+'b'));
}
</script>
<script language="javascript">
function pop()
{
var str = '';
for ( var i=0 ; i < 5000 ; ++i )
{
str += 'a';
}
// alert(str.length);
window.showModalDialog('pop.htm', new String(str+'b'));
}
</script>
就这样使用一个简单的 new String(str+'b') 就完全突破限制了。
- 模态窗口对字符串参数的巨无聊限制
- 模态窗口对字符串参数的巨无聊限制
- js的showModalDialog对字符串的限制
- 无聊的相关配置参数
- 限制窗口的最小值
- Windows 的窗口大小限制
- 如何限制窗口的 大小?
- showModalDialog 4096限制,字符串参数突破方法
- HTTP协议规范的get和post对传递的参数的最大长度没有限制
- struts2中form表单使用post方式提交参数(键值对)超过10000的限制
- @requestBody:Spring MVC对Json字符串参数的处理(坑)
- StringUtil对字符串类型参数进行校验的工具类
- 模态窗口创建非模态窗口,MFC定时器完成对一个文件的监测,定时刷新窗口
- 文件系统对文件大小的限制
- 对索引视图的限制
- js对前台的限制
- 对复选框的限制
- 对文本框的输入限制
- 处理IE中Bubble Up 事件模型的细节
- 搞笑的W3C和M$对DOM中属性命名
- 在XP+SP2下隐藏模态窗口的状态栏
- 判断用户浏览器是否是XP SP2的IE6
- 怀念母校--松江二中
- 模态窗口对字符串参数的巨无聊限制
- 随机数字直接生成图片的ASP代码
- 应用虑镜特效时遇到浏览器权限问题
- encode脚本和normal脚本混用的问题
- IE7提供XMLHttpRequest对象为兼容
- IE6使用add方法添加optGroup的bug
- Visual studio .net已检测到指定的Web服务器运行的不是asp.net1.1版,您将无法运行asp.net Web应用程序或服务
- IE解析完全相同html代码的不同表现
- xml