Проблема в IE8 с GET Параметры при открытии новых окон с JavaScript - PullRequest
1 голос
/ 19 марта 2010

У меня проблема с IE8, открытием нового окна с javascript и отправкой параметров со специальными символами.

<a href="javascript:oWin('/html/de/4664286/printregistrationcontent.html?12-security question&#61;Wie hei&#223;t Ihr Lieblingsrestaurant','PRINT',800,600);" class="print">Seite drucken</a>

Проблема в том, что буква ß (острый S). Как видите, приведенная выше строка кодируется благодаря анти-XSS. Эта ссылка работает в FF и IE6, но IE8 передает параметр URL как символ с кодом 65 *** (не знаю значение exaxt). В открывшемся окне вы увидите только квадрат (потому что персонаж с 65000+ не печатается).

Я также пытался использовать кодировку URL вместо кодировки HTML

<a href="javascript:oWin('/html/de/4664286/printregistrationcontent.html?12-security question%3DWie hei%C3%9Ft Ihr Lieblingsrestaurant','PRINT',800,600);" class="print">Seite drucken</a>

Если я нажму на эту ссылку в FF или IE6, она будет работать, как и ожидалось, но IE8 не сможет передать «ß» на сервер и, следовательно, вернет его неправильно. Если я вставлю этот URL в IE8, он тоже будет работать, но не в том случае, если окно открывается с помощью javascript.

Функция Javascript oWin определяется следующим образом

function oWin(url,title,sizeH,sizeV) { 
winHandle = top.open(url,title,'toolbar=no,directories=no,status=yes,scrollbars=yes,menubar=no,resizable=no,width='+sizeH+',height='+sizeV);
if(navigator.appVersion.indexOf("MSIE 3",0)==-1) id = setTimeout('winHandle.focus()',1000);
} 

Если у кого-то есть идея, где искать причину, ответьте на это.

Спасибо АМФА

1 Ответ

1 голос
/ 19 марта 2010

Не все браузеры кодируют атрибут href одинаково - это может быть вашей проблемой. Я думаю, вы обнаружите, что если вы переместите код в атрибут onclick, он будет обрабатываться по-разному и более согласованно в разных браузерах.

Добавление событий onclick таким способом, однако, не обязательно является хорошим дизайном - лучше всего добавлять обработчики в javascript, а не в сам тег атрибута, но, возможно, стоит хотя бы попробовать.

<a href="javascript:oWin('/html/de/4664286/printregistrationcontent.html?12-security question&#61;Wie hei&#223;t Ihr Lieblingsrestaurant','PRINT',800,600);" 
  class="print"
  onclick="oWin('/html/de/4664286/printregistrationcontent.html?12-security question&#61;Wie hei&#223;t Ihr Lieblingsrestaurant','PRINT',800,600); return false;"
>
  Seite drucken
</a>

... убедитесь, что вы возвращаете false в обработчике onclick, чтобы предотвратить переход по ссылке href.

...