Открыть страницу в новом окне без блокировки всплывающих окон

Надеюсь, вы можете немного помочь здесь... У меня есть форма, которая переводит слово в поле, заполняет поле с помощью переведенного термина, а затем отправляйте действие в одну кнопку отправки.

подача создается jquery. проблема заключается в том, что целевая страница блокируется, поскольку все 3 основных браузера рассматривают ее как всплывающее окно, Вы знаете, как открыть его, как новую вкладку или новое окно? Я не хочу, чтобы цель была как сама, так как я хочу, чтобы люди открывали мой сайт.

Я считаю, что проблема в этой строке:

document.forms.form1.submit();

но я также знаю, что должен быть способ перефразировать его, чтобы цель не рассматривалась как всплывающее окно.

это script:

<script type="text/javascript">

$(function transle() {
  $('#transbox').sundayMorningReset();
  $('#transbox input[type=button]').click(function(evt) {
    $.sundayMorning(
      $('#transbox input[type=text]').val(), {
        source: '',
        destination: 'ZH',
        menuLeft: evt.pageX,
        menuTop: evt.pageY
      },
      function(response) {
        $('#transbox input[type=text]').val(response.translation);

        //document.getElementById("form1").submit();
        document.forms.form1.submit();

      }
    );
  });
});

</script>

и это форма:

<table id="transbox" name="transbox" width="30px" border="0" cellspacing="0" cellpadding="0">
  <form action="custom-page" method="get" name="form1" target="_blank" id="form1">

    <tr>
      <td>
        <input id="q" name="q" type="text" class="search_input" onFocus="if (this.value == 'Evening dress') {this.value = '';}" onBlur="if (this.value == '') {this.value = 'Evening dress';}" value="Evening dress" />
      </td>
      <td>
        <input type="button" value="Find" style="color: #333; width: 157px; font-weight:bold"></input>
      </td>
    </tr>

  </form>
</table>

ИЗМЕНИТЬ

Я попробовал все эти строки:

document.getElementById("form1").submit();
document.forms.form1.submit();
form1.submit();

все заканчивается тем, что цель блокируется всплывающим окном. пожалуйста, есть ли какой-либо другой способ, который я должен сделать, чтобы он не позволял ему всплывать?

возможно, следует использовать onsubmit для создания jQuery? кто-то знает, как?

Ответ 1

Браузер будет открывать только вкладку/всплывающее окно без предупреждения блокировки всплывающих окон, если команда для открытия вкладки/всплывающего окна происходит из доверенного события, Это означает, что пользователь должен активно нажать где-нибудь, чтобы открыть всплывающее окно.

В вашем случае пользователь выполняет щелчок, поэтому у вас есть доверенное событие. Однако вы теряете этот доверенный контекст, выполняя запрос Ajax. У вашего обработчика успеха больше нет этого события. Единственный способ обойти это - выполнить синхронный запрос Ajax, который заблокирует ваш браузер во время его запуска, но сохранит контекст события.

В jQuery это должно сделать трюк:

$.ajax({
 url: 'http://yourserver/',
 data: 'your image',
 success: function(){window.open(someUrl);},
 async: false
});

Вот ваш ответ: Откройте новую вкладку без блокировщика всплывающих окон после вызова ajax на клике пользователя

Ответ 2

Как правило, всплывающие блокираторы нацеливают окна, которые запускаются без взаимодействия с пользователем. Обычно событие click может открывать окно без его блокировки. (если это действительно плохой блокировщик всплывающих окон)

Попробуйте запустить после события клика

Ответ 3

Для кнопки "Отправить" добавьте этот код, а затем установите свою форму target = "newwin"

onclick=window.open("about:blank","newwin") 

Ответ 4

PS > Я отправил этот ответ по соответствующему вопросу. Здесь, как я обошел проблему моего асинхронного запроса async, потерявшего доверенный контекст:

Я открыл всплывающее окно непосредственно на клике пользователей, направил url на about:blank и получил ручку в этом окне. Вероятно, вы можете направить всплывающее окно на URL-адрес загрузки, пока ваш запрос ajax будет сделан

var myWindow = window.open("about:blank",'name','height=500,width=550');

Затем, когда мой запрос будет успешным, я открою URL-адрес обратного вызова в окне

function showWindow(win, url) {
     win.open(url,'name','height=500,width=550');
}

Ответ 5

function openLinkNewTab (url){
    $('body').append('<a id="openLinkNewTab" href="' + url + '" target="_blank"><span></span></a>').find('#openLinkNewTab span').click().remove();
}

Ответ 6

попробуйте отправить форму в новое окно (установите target="new"), это откроет представленную страницу в новом окне, опять же ее невозможно избежать браузера.