Форма отправки Javascript работает в webkit, не работает в других местах - PullRequest
0 голосов
/ 10 сентября 2009

Я написал этот код, чтобы попытаться отправить URL в качестве значения сообщения на ту же страницу. Код прекрасно работал в Chrome и Safari ... но не работает в FF3 и IE (последний, который меня беспокоит меньше, но он мне нужен для работы в Firefox). В FF3 и IE открывается пустая новая вкладка. Что я должен знать о различиях между тем, как webkit и другие браузеры обрабатывают отправку форм через javascript?

код, который я использую, это:

function posturl (url) {
        var myForm = document.createElement("form");
        myForm.method="post" ;
        var myInput = document.createElement("input") ;
        myInput.setAttribute("name", "url") ;
        myInput.setAttribute("value", url);
        myForm.appendChild(myInput);
        document.body.appendChild(myForm) ;
        myForm.submit();
        document.body.removeChild(myForm) ;
    }

РЕДАКТИРОВАТЬ: Может быть, я должен добавить, что он работает так, что я использую сценарий как href в моих тегах привязки. Поэтому, когда вы нажимаете на ссылку, он передает параметр через сообщение на ту же страницу, соответственно обновляя содержимое.

Ответы [ 2 ]

1 голос
/ 10 сентября 2009

Это работает для моего Firefox 2, Chrome 2. Вот моя полная тестовая страница:

<!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>
    <script>
    function posturl (url) {
        var myForm = document.createElement("form");
        myForm.method="post";

        var myInput = document.createElement("input") ;
        myInput.setAttribute("name", "url") ;
        myInput.setAttribute("value", 'http://www.google.com');

        myForm.appendChild(myInput);
        document.body.appendChild(myForm);
        myForm.submit();
        document.body.removeChild(myForm);
    }
    </script>
</head>
<body>
<input type="button" value="posturl()" onclick="posturl()" />
</body>

Должно быть что-то еще (возможно, связанное с открытием пустых вкладок ?? WTF?), Которое нарушает ваш код.

Вот почему это не работает в IE.

0 голосов
/ 10 сентября 2009

Это должно работать во всех браузерах. Но на самом деле я просто думаю, что вам нужно window.setTimeout со значением 0. То, что происходит, это то, что вы пытаетесь получить доступ к элементу, прежде чем JavaScript успеет «дышать»

Попытка:

window.setTimeout( function() { 
        myForm.submit();
        document.body.removeChild(myForm);
}, 0 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...