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

正常:

有空格報錯:

有特殊字符報錯:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM