Существуют ли правила относительно того, какие символы могут появляться в имени окна для IE8?
Да. Хотя это, кажется, не задокументировано, IE всегда требовал, чтобы имя окна состояло из буквенно-цифровых символов и подчеркивания. Двоеточие не будет принято, независимо от того, прочитано ли оно из зашифрованного строкового литерала.
Если вам действительно нужно сопоставить произвольную строку с уникальной версией, безопасной для имени, вам нужно сделать что-то вроде кодирования каждого не буквенно-цифрового символа в escape-последовательности, например:
function encodeToName(s) {
return s.replace(/[^A-Za-z0-9]/g, function(match) {
var c= match[0].charCodeAt(0).toString(16);
return '_'+(new Array(5-c.length).join('0'))+c;
});
}
alert(encodeToName('New Window: Jamie'));
// 'New_0020Window_003A_0020Jamie'
Я согласен с Касабланкой, хотя, похоже, вам вряд ли стоит это делать. Пользователь никогда не увидит имя окна, поэтому w1
также хорош. Достаточно редко, что вам вообще нужны имена окон.