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

    正常:

    有空格报错:

    有特殊字符报错:

  • 相关阅读:
    仿MSN小类别滑动效果
    pku1674 Sorting by Swapping
    pku1456 Supermarket
    pku1083 Moving Tables
    pku1125 Stockbroker Grapevine
    pku2232 New StoneForfexCloth Game
    如何低头前进
    和两年前一样
    股票亏了
    早上选举了
  • 原文地址:https://www.cnblogs.com/dataadapter/p/2851274.html
Copyright © 2020-2023  润新知