Скрипт news_add.php пытается добавить новость в БД и, если новость успешно добавлена, возвращает id этой новости из таблицы БД. В противном случае возвращается текст ошибки. Т.е., если все "ОК", то вернется просто число, иначе - какой-то текст.
JavaScript регулярным выражением проверяет ответ и, если это число (т.е. новость успешно добавлена), просто закрывает всплывающее окно. В противном случае вызывается alert() с текстом ошибки. Пока больше ничего не требуется.
Проблема:
Mozilla и FireFox ведут себя не очень хорошо - окно вовсе не закрывается сразу. Чтобы оно закрылось, необходимо кликнуть в любое его место.
Если же просто где-нибудь во всплывающем окне расположить скрипт window.close() (например, в ссылке в окне
You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
Актуальные контакты:
Telegram: @Nikker_web
E-Mail: tarasevich.email@gmail.com
Портфолио https://www.behance.net/d4d4186e
Разрабатываю дизайн групп в соц сетях, сайтов, приложений, другой дизайн под заказ
Актуальные контакты:
Telegram: @Nikker_web
E-Mail: tarasevich.email@gmail.com
Разрабатываю дизайн групп в соц сетях, сайтов, приложений, другой дизайн под заказ
Портфолио https://www.behance.net/d4d4186e
Question
ekha
Здравствуйте, уважаемые участники.
Недавно начал разбираться с AJAX-ом. Решил сделать более удобную систему новостей. Пока без всяких там WYSIWYG и т.п. - просто textarea.
На "главной" странице новостей находится кнопочка, при нажатии на которую методом open() вызывается всплывающее окно:
Сама функция ShowAddNewsForm() находится в подключаемом файле:
function ShowAddNewsForm() {
var options = "";
options += "directories = no,";
options += "height = 200,";
options += "width = 300,";
options += "left = 20,";
options += "top = 200,";
options += "menubar = no,";
options += "location = no,";
options += "scrollbars = no,";
options += "resizale = no,";
options += "status = no,";
options += "toolbar = no";
window.open("news/news_form.html", "_blank", options);
}
news_form.html представляет из себя довольно простой файл:
news_form.js:
function AddNews() {
var http_request = false;
if (window.XMLHttpRequest) {
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) http_request.overrideMimeType('text/plain');
}
else if (window.ActiveXObject) {
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
http_request.onreadystatechange = function() { alertContents(http_request); };
http_request.open("POST", "news_add.php", true);
http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
http_request.setRequestHeader("Charset", "windows-1251");
http_request.send("txt="+encodeURIComponent(document.getElementById("txt").value));
}
function alertContents(http_request) {
var resCode = 0;
var resText = "";
if (http_request.readyState == 4) {
if (http_request.status == 200) {
resText = http_request.responseText;
if(!(/^d+$/.test(resText))) resCode = 2;
} else {
resCode = 1;
resText = "Не удалось подключиться к серверу.";
}
if(resCode > 0) alert(resText);
else window.close();
}
}
Скрипт news_add.php пытается добавить новость в БД и, если новость успешно добавлена, возвращает id этой новости из таблицы БД. В противном случае возвращается текст ошибки. Т.е., если все "ОК", то вернется просто число, иначе - какой-то текст.
JavaScript регулярным выражением проверяет ответ и, если это число (т.е. новость успешно добавлена), просто закрывает всплывающее окно. В противном случае вызывается alert() с текстом ошибки. Пока больше ничего не требуется.
Проблема:
Mozilla и FireFox ведут себя не очень хорошо - окно вовсе не закрывается сразу. Чтобы оно закрылось, необходимо кликнуть в любое его место.
Если же просто где-нибудь во всплывающем окне расположить скрипт window.close() (например, в ссылке в окне
close), то окошко закрывается нормально.
Помогите, пожалуйста, решить проблему.
С уважением,
Евгений
Link to comment
Share on other sites
4 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.