0x80004005 (NS_ERROR_FAILURE) [nsIDOMHTMLFormElement.submit] - PullRequest
3 голосов
/ 16 апреля 2011

Я создал метод для извлечения некоторых данных (широта, долгота) и открытия окна для их сопоставления.

function openMapWindow (data) {
    alert(data);

    var mapForm = document.createElement("form");
    mapForm.target = "Map";
    mapForm.method = "POST"; // or "post" if appropriate
    mapForm.action = "/map.php";

    var mapInput = document.createElement("input");
    mapInput.type = "text";
    mapInput.name = "addrs";
    mapInput.value = data;
    mapForm.appendChild(mapInput);

    document.body.appendChild(mapForm);

    window.open("", "Map", "status=0,title=0,height=600,width=800");

    mapForm.submit();

}

Переменная данных заполняется следующими данными:

map coorindates

Тем не менее я получаю следующую область в строке:

mapInput.value = data;

ОШИБКА: необработанное исключение: [Исключение ... »Компонент возвратил код ошибки: 0x80004005 (NS_ERROR_FAILURE)[nsIDOMHTMLFormElement.submit] "nsresult:" 0x80004005 (NS_ERROR_FAILURE) "расположение:" кадр JS :: http://www.xxx.xxx :: openMapWindow :: строка 244 "данные: нет]

строка 0

1 Ответ

6 голосов
/ 16 апреля 2011

Это связано с блокировщиком всплывающих окон вашего браузера.Если вы внимательно посмотрите на ошибку, она описывает «кнопку» отправки как проблему, а не строку mapValue.input.

У меня работает следующий код:

http://jsfiddle.net/WDFNL/

function openMapWindow (data) {
    alert(data);

    var mapForm = document.createElement("form");
    mapForm.target = "Map";
    mapForm.method = "POST"; // or "post" if appropriate
    mapForm.action = "/map.php";

    var mapInput = document.createElement("input");
    mapInput.type = "text";
    mapInput.name = "addrs";
    mapInput.value = data;
    mapForm.appendChild(mapInput);

    document.body.appendChild(mapForm);

    window.open("", "Map", "status=0,title=0,height=600,width=800");

    mapForm.submit();
}
openMapWindow('-35.308401,149.124298-35.307841,149.124298');

Сначала я получил ошибку, которую вы описываете, но это было связано с моим блокировщиком всплывающих окон.После того как я разрешил jsfiddle.net разрешать всплывающие окна, он начал работать.

РЕДАКТИРОВАТЬ

Существует простой способ проверить это и предупредить пользователя, если его всплывающее окноблокировщик отключает карту:

http://jsfiddle.net/WDFNL/1/

function openMapWindow (data) {
    var mapForm = document.createElement("form");
    mapForm.target = "Map";
    mapForm.method = "POST"; // or "post" if appropriate
    mapForm.action = "/map.php";

    var mapInput = document.createElement("input");
    mapInput.type = "text";
    mapInput.name = "addrs";
    mapInput.value = data;
    mapForm.appendChild(mapInput);

    document.body.appendChild(mapForm);

    map = window.open("", "Map", "status=0,title=0,height=600,width=800");

    if (map) {
        mapForm.submit();
    } else {
        alert('You must allow popups for this map to work.');
    }
}
openMapWindow('-35.308401,149.124298-35.307841,149.124298');

Обратите внимание на переменную map.Вы можете проверить его, чтобы увидеть, вернул ли window.open дескриптор окна, и действовать соответственно в зависимости от результата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...