IE下 Window.Open(url,name), name参数空格、符号问题
2013-01-08 17:39 Mike.Jiang 阅读(4476) 评论(0) 编辑 收藏 举报1 背景
在检查UI原型时,发现一个特别的问题:同一个打开新窗口的方法,在某个页面中报参数错误(IE下)。
打开页面的方法:
function OpenWindow(url, title, width, height) { var wWin = window.screen.width; var hHei = window.screen.height; var left = (wWin - width) / 2; var top = (hHei - height) / 2; var setting = 'width=' + width + ',height=' + height + ',top=' + top + ',left=' + left; setting += ',titlebar=yes,menubar=no,toolbar=no,location=yes,status=yes,scrollbars=yes,resizable=yes'; window.open(url, title, setting); }
方法调用正常的页面JS代码:
$(".port").click(function () { OpenWindow("../Common/CommonPort.html", "Port", 660, 550); });
方法调用错误的页面JS代码
$(".PickLot").click(function () { OpenWindow("SS_GoodsOut_PickUp.html", "Goods Out Lot Pick", 660, 550); });
报的错误是:Message: Invalid argument.通过这个错误提示,就知道最终window.open方法的参数有问题,但这两个调用方法只有URL和TITLE不同,于是分别测试下。先测试URL,在报错的页面调用OpenWindow("../Common/CommonPort.html", "Port", 660, 550);。。。无问题,所以错误的地方就是TITLE。比较两个TITLE,"Port", "Goods Out Lot Pick",有可能是第二个TITLE过长,或第二个参数有空格。当然最后测试是发现空格的问题。即把TITLE中的空格去掉即可。
这个太疼,于是乎在网上搜了下,发现除了空格有问题外,TITLE包含特殊字符时也会报错。
2 深究
在发现空格与特殊字符都报错后,想找下Window.Open方法说明,w3school的解释如下:
window.open(URL,name,features,replace)
name: 一个可选的字符串,该字符串是一个由逗号分隔的特征列表,其中包括数字、字母和下划线,该字符声明了新窗口的名称。这个名称可以用作标记 <a> 和 <form> 的属性 target 的值。如果该参数指定了一个已经存在的窗口,那么 open() 方法就不再创建一个新窗口,而只是返回对指定窗口的引用。在这种情况下,features 将被忽略。
根据上面open的说明,可以知道name实际上是一个变量,指定的是新窗口的名称,而不是新窗口的title。额,以前一直以为是新窗口的Title。希望看到这个博文的人也注意下这个小细节问题。
3 备注
Window.open方法测试(请在IE下哦,亲)
正常:
有空格报错:
有特殊字符报错: