4 votes

La soumission de mon formulaire est bloquée parce que le cadre est sandboxé et que l'autorisation "allow-forms" n'est pas définie.

J'essaie de créer un formulaire personnalisé et un post de soumission pour Hubspot.

J'ai le code suivant

HTML

<head>
<script src="prezzi-form-submit.js"></script>
</head>
<body>

  <form class='form-inline' id='my-custom-form'>
    <div class="form-group">
      <input type='email' class='form-control' placeholder='Your email address' required>
    </div>
    <button class="btn btn-primary" type='submit'>Sign up</button>
  </form>

  <!-- Actual form that gets submitted to HubSpot -->
  <div class="hidden" id='hubspot-form'>
    <script charset="utf-8" src="//js.hsforms.net/forms/current.js"></script>
    <script>
      hbspt.forms.create({
        portalId: 'my-portal-id',
        formId: '92b9b82a-0da2-4e23-8a30-04541c05ce6d',
        onFormReady: function($form) {
          $form.attr('target', 'hubspot-iframe');
        }
      });
    </script>

    <!-- iFrame that data will get submitted to. This hack stops the page redirect. -->
    <iframe name="hubspot-iframe" id="hubspot-iframe" sandbox="allow-forms"></iframe>
  </div>
</body>

JS (prezzi-form-submit.js)

// // Send form data to HubSpot from the client.
function submitToHubSpot(data) {
  var $form = $('#hubspot-form form'),
      k;

  // Loop through each value and find a matching input.
  // NOTE: Doesn't support checkbox/radio.
  for (k in data) {
    $form.find("input[name='" + k + "']").val(data[k]);
  }

  $("form input:submit").trigger("click");
}

// Here's how you'd use this.
$('#my-custom-form').on('submit', function() {
  var formData = {};
  $(this).serializeArray().forEach(function(data) {
    formData[data.name] = data.value;
  });

  submitToHubSpot(formData);

  // We sent the data. Now do whatever else you want.
  alert('Gee, thanks Jonathan! Now I can focus on onboarding my customers with Appcues!');
  window.location.href = 'http://appcues.com';
})

Lorsque j'appuie sur le bouton d'envoi, j'obtiens l'erreur suivante dans la console

Blocage de la soumission du formulaire à " " parce que le cadre du formulaire est sandboxé et que l'autorisation "allow-forms" n'est pas définie.

Comme vous pouvez le voir, j'ai le

sandbox="allow-forms"

dans le cadre I mais ça ne marche pas. Comment puis-je corriger cette erreur ?

2voto

Suzisqueue Points 21

J'ai rencontré le même problème avec un formulaire iFrame sur Hubspot et j'ai obtenu la même erreur JS. J'ai découvert que cela avait à voir avec la prévisualisation en direct à l'aide de l'outil HS Design.

Dans le menu déroulant en haut, il y a l'"Aperçu en direct avec options d'affichage", puis l'"Aperçu sans options d'affichage". C'est la sélection de l'"aperçu avec options d'affichage" qui le rend "Sandboxé", essayez celui qui ne l'est pas. J'espère que cela pourra être utile à quelqu'un.

2voto

Benoit Duffez Points 2301

Parfois, lorsque vous cliquez sur un lien à partir d'une application, le javascript est désactivé dans l'onglet ouvert.

Fermez l'onglet et rouvrez la même URL dans un nouvel onglet, cela pourrait fonctionner.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X