Следующий код отображает две кнопки: всплывающее окно AJAX и всплывающее окно Direct. Они должны открыть одну и ту же страницу в новом окне. Прямые всплывающие вызовы просто window.open () в событии onclick. Всплывающее окно AJAX выполняет вызов AJAX, а затем в функции stateChanged () точно так же вызывает window.open ().
Они оба работают в FF, но всплывающее окно AJAX не в IE, оно отображает раздражающее всплывающее предупреждение.
Я действительно думаю, что понимаю, что происходит. Блокировщики всплывающих окон обычно допускают одно всплывающее окно за один клик. В этом случае связь между щелчком и всплывающим окном теряется из-за вызова AJAX. Но в моем случае URL для открытия предоставляется серверным компонентом через ответ AJAX. Так что я не могу просто избавиться от вызова AJAX. Я также не могу заставить пользователей использовать FF или изменять свои настройки блокировщика всплывающих окон в IE.
Любые идеи или обходные пути приветствуются.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> popup test </title>
<script type="text/javascript">
var xmlhttp;
function loadXMLDoc(url)
{
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
alert ("Your browser does not support XMLHTTP!");
return;
}
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}
function stateChanged()
{
if (xmlhttp.readyState==4)
{
if (xmlhttp.status==200)
{
window.open('popup.html', '_blank');
}
else
{
alert("Problem retrieving XML data:" + xmlhttp.statusText);
}
}
}
</script>
</head>
<body>
<button type="button" onclick="loadXMLDoc('popup.html')">AJAX popup</button>
<button type="button" onclick="window.open('popup.html', '_blank');">Direct popup</button>
</body>
</html>