IE8 window.open name - не нравится кодировка JavaScript? - PullRequest
2 голосов
/ 08 ноября 2010

Я вызываю window.open () следующим образом:

window.open('blank.html', 'New_Window\x3a_Jamie', 'width=800,height=800');

То, что я сделал в коде, - это имя окна и кодирование его JavaScript с использованием библиотеки Microsoft Web Protection.Я также заменяю пробелы подчеркиванием, потому что я прочитал, что IE не любит пробелы в именах окон.К вашему сведению, исходной строкой было «Новое окно: Джейми», и похоже, что «:» кодируется как «\ x3a».Окно открывается в FireFox просто отлично, но окно не открывается в IE8.IE8 просто не нравится эта кодировка, или символ или что?Существуют ли правила относительно того, какие символы могут появляться в имени окна для IE8?

Ответы [ 3 ]

2 голосов
/ 08 ноября 2010

Существуют ли правила относительно того, какие символы могут появляться в имени окна для 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 также хорош. Достаточно редко, что вам вообще нужны имена окон.

0 голосов
/ 08 ноября 2010

Вам действительно нужно имя окна? От Документы :

Такая строка может использоваться в качестве цели ссылок и форм, когда указан целевой атрибут элемента <a> или <form>. Этот строковый параметр не должен содержать пробелов.

Это касается единственного использования указания имени, и хотя я не вижу никаких ограничений, кроме "без пробелов", было бы безопасно просто придерживаться букв, цифр и подчеркиваний.

0 голосов
/ 08 ноября 2010

Я думаю , что хочет, чтобы имя окна было чем-то, что работало бы как идентификаторТаким образом, «New_Window_Jamie», вероятно, будет в порядке.

...