POST de formulaire dans un iframe sans affecter l'histoire

Est-il possible d'envoyer un formulaire dans une iframe sans affecter l'historique du navigateur?

J'ai mis en place l'envoi d'une croix domaine de la requête POST. Il utilise Javascript pour créer et soumettre un formulaire à l'intérieur d'un iframe. Il fonctionne, mais chaque demande, ajoute un élément de l'historique du navigateur.

Quelqu'un connait un moyen de contourner cela? J'ai essayé de créer l'iframe avec les deux innerHTML et createElement. Je n'ai pas vu de différence si loin.

PS - j'aimerais utiliser XMLHtttpRequest ("Ajax"), mais il ne prend pas en charge l'envoi de données dans tous les domaines. Et j'aimerais utiliser GET au lieu de post, mais j'ai besoin d'envoyer plus de 2k de données.

Voici une version de mon code. J'ai essayé beaucoup de variations et ont cherché partout, butI n'arrive pas à trouver une solution qui n'affecte pas l'historique du navigateur. Je crois qu'il n'est pas possible, quelqu'un peut confirmer?

<html>

<head>
  <script type="text/javascript">
    function submit(params) {

      var div = document.createElement('div');
      div.innerHTML = '<iframe height="50" width="50"></iframe>';
      document.body.appendChild(div);

      var iframe = div.firstChild;
      var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
      iframeDocument.open();
      iframeDocument.close();

      var form = iframeDocument.createElement('form');
      iframeDocument.body.appendChild(form);
      form.setAttribute('action', 'http://some-other-domain.com/submit-here');
      form.setAttribute('method', 'POST');

      for (param in params) {
        var field = iframeDocument.createElement('input');
        field.setAttribute('type', 'hidden');
        field.setAttribute('name', param);
        field.setAttribute('value', params[param]);
        form.appendChild(field);
      }
      form.submit();
    }

    window.onload = function() {
      document.getElementById('button').onclick = function() {
        submit({
          'x' : 'Some Value',
          'y' : 'Another Value',
          'z' : new Date().getTime()
        });
      }
    }
  </script>
</head>

<body>
  <h1>Example of using Javascript to POST across domains...</h1>
  <input id="button" type="button" value="click to send">
</body>

</html>
Pourquoi ne pouvez-vous pas simplement utiliser de l'ajax pour envoyer le formulaire? Qui vous empêchent de recharger toutes les pages, ce qui devrait libérer de votre histoire. Ai-je raté quelque chose?
J'ai besoin de mettre de la croix de domaine. Ajax (XMLHttpRequest) POSTE ne prend pas en charge l'envoi de données à un domaine qui est différente de la page hôte.
Je pense que vous pouvez envoyer une requête POST vis de l'ajax. Voir ma réponse mis à jour. J'espère que cela aide.
Je pense que c'est pas possible .. (même si c'était en quelque sorte, il serait susceptible d'être spécifiques à un navigateur).
La solution finale a été de 1) insérer un iframe hébergé sur mon domaine 2) utilisez la fenêtre.nom de hack pour envoyer des données à partir de la page d'hôte (sur un autre domaine) de l'iframe et 3) envoyer une requête Ajax requête POST vers le serveur sur mon domaine.

OriginalL'auteur Brian | 2009-10-20