IE下 Window.Open(url,name), name参数空格、符号问题

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下哦,亲)

正常:

有空格报错:

有特殊字符报错:

原文地址:https://www.cnblogs.com/dataadapter/p/2851274.html