|
|
|
(AJAX) Проблемы с закрытием окон, вызванных методом open() (Mozilla, FF)
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, уважаемые участники. Недавно начал разбираться с AJAX-ом. Сейчас пишу маленькуя системку администрирования новостей на сайте. Суть: на "главной" странице есть кнопочка, при нажатии на которую методом open() вызывается всплывающее окно: Код: plaintext 1. Сама функция ShowAddNewsForm() находится в подключаемом файле: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. news_form.html представляет из себя довольно простой файл: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. news_form.js : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. Скрипт news_add.php пытается добавить новость в БД и, если новость успешно добавлена, возвращает id этой новости из таблицы БД. В противном случае возвращается текст ошибки. Как видно, пока в родительское окно я ничего не передаю. JavaScript проверяет, вернулось ли ID или ошибка. Если ID, то я пытаюсь закрыть окно, иначе - вывод текста ошибки alert-ом. Проблема: Mozilla и FireFox ведут себя не очень хорошо - окно вовсе не закрывается сразу. Чтобы оно закрылось, необходимо кликнуть в любое его место. При этом простой вызов window.close(), например, из ссылки в окне Код: plaintext Помогите, пожалуйста, решить проблему. С уважением, Евгений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2007, 07:56 |
|
||
|
(AJAX) Проблемы с закрытием окон, вызванных методом open() (Mozilla, FF)
|
|||
|---|---|---|---|
|
#18+
1. В конце функции ShowAddNewsForm() надо поставить return false; 2. В функции alertContents() дважды создана переменная resText. Непонятно, как будет она вести себя дальше. 3. Вне зависимости от отзыва сервера (код 200 или другой) resCode получит значение 1 или 2. Соответственно, последняя проверка не закроет окно, разве только если отзыв с сервера был невалидный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 00:44 |
|
||
|
(AJAX) Проблемы с закрытием окон, вызванных методом open() (Mozilla, FF)
|
|||
|---|---|---|---|
|
#18+
автор1. В конце функции ShowAddNewsForm() надо поставить return false; Пробовал ставить return (причем и true, и false) и в конце функции, и даже сразу после закрытия окна (мне пока дальнейших действий не требуется). Ничего не помогает. автор2. В функции alertContents() дважды создана переменная resText. Непонятно, как будет она вести себя дальше. Этот момент я и в самом деле проглядел, но все равно, исправление не помогает. автор3. Вне зависимости от отзыва сервера (код 200 или другой) resCode получит значение 1 или 2. Соответственно, последняя проверка не закроет окно, разве только если отзыв с сервера был невалидный. Почему же это? Изначально переменная res установлена в 0 и изменяется только, если произошла ошибка (1 - если статус не 200, 2 - если вернулось не id). Более того, могу с уверенностью сказать, что фрагмент window.close() обрабатывается: 1) если заменить его, скажем, на alert() или еще какой, то в этом легко убедиться, 2) окно замечательно закрывается в IE, Avant и Opera Mozilla и FireFox тоже окно "закрывают", только оно не исчезает сразу. Чтобы оно исчезло, на него надо кликнуть (в любое место, кроме заголовка) или передать фокус любому его элементу. Интересно, что за заголовок окно можно даже перемещть по экрану. Еще один момент - если ПОСЛЕ window.close() поставить alert(), то после закрытыя окна сообщения "главное" окно закрывается (по видимому, ему просто передается фокус - это аналогично тому, что я просто кликну по окну). Но мне этот alert() не очень-то нужен. Да и теперь это уже дело принципа - разобраться, почему браузеры себя так ведут... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 03:15 |
|
||
|
(AJAX) Проблемы с закрытием окон, вызванных методом open() (Mozilla, FF)
|
|||
|---|---|---|---|
|
#18+
Блин, просмотрел ... В строчке Код: plaintext Код: plaintext Или в вызове Код: plaintext Код: plaintext Это вроде мелочь, доходчиво не объясню, лень искать, но сам попадал на такой "просак". Ну и еще такой "финт": событий onClick не существует, есть onclick. Основные броузеры не реагируют, но бывает с менее известными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 05:02 |
|
||
|
(AJAX) Проблемы с закрытием окон, вызванных методом open() (Mozilla, FF)
|
|||
|---|---|---|---|
|
#18+
Не помогает. IE и Opera работаю нормально, а Mozilla и FF не хотят сразу закрывать окно - ждут, когда одному из элементов передастся фокус... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 05:20 |
|
||
|
(AJAX) Проблемы с закрытием окон, вызванных методом open() (Mozilla, FF)
|
|||
|---|---|---|---|
|
#18+
В архиве - все необходимые файлы и скрипты. Проблема: в IE и Opera окно закрывается нормально. В Mozilla и FF окно закрывается только после очередного получения фокуса. Если кому интересно, прошу посмотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 13:41 |
|
||
|
|

start [/forum/topic.php?fid=22&gotonew=1&tid=1457391]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
168ms |
get topic data: |
8ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 9ms |
| total: | 256ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...