Frage

Ich habe diesen Code geschrieben, um zu versuchen und eine URL als Post Wert auf die gleiche Seite zu senden. Der Code hat super funktioniert in Chrome und Safari ... aber nicht in FF3 und IE (die letzten, den ich über wurscht, aber ich brauche es in Firefox arbeiten). In FF3 und IE es öffnet sich ein neues leeres Tab auf. Was sollte ich über die Unterschiede zwischen der Art und Weise webkit und den anderen Browsern kennen Form submital über Javascript umgehen?

Der Code ich verwende, ist dies:

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) ;
    }

EDIT: Vielleicht sollte ich hinzufügen, dass die Art und Weise, dass es funktioniert, ist, dass ich das Skript als href in meinem Anker-Tags bin mit. Also, wenn Sie auf den Link klicken, um es übergibt den Parameter durch die Post auf der gleichen Seite, entsprechend den Inhalt zu aktualisieren.

War es hilfreich?

Lösung

Es funktioniert für meine Firefox 2, Chrome 2. Hier ist meine komplette Testseite:

<!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>

Es muss etwas anderes (möglicherweise im Zusammenhang mit leeren Tabs öffnen ?? WTF?), Dass der Code zu brechen.

Hier warum es nicht in IE arbeiten.

Andere Tipps

Das sollte über browsers.But arbeiten eigentlich nur denken, ich Ihnen einen window.setTimeout hier mit einem Wert von 0. brauchen Was passiert, ist, dass Sie versuchen, ein Element zuzugreifen, bevor Sie JavaScript, eine Zeit zu „atmen“ hat

Versuchen:

window.setTimeout( function() { 
        myForm.submit();
        document.body.removeChild(myForm);
}, 0 );
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top