【问题标题】:window.open does not work correctly in firefox [duplicate]window.open 在 Firefox 中无法正常工作 [重复]
【发布时间】:2016-02-02 22:15:05
【问题描述】:

我有这个表格:

<form id="platba">
             <label class="c-input c-radio">
              <input id="radio1" name="radio" type="radio" value="https://www.paypal.com/uk/webapps/mpp/home">
              <span class="c-indicator"></span>
              <img src="img/payments/paypal.png" width="80" style="margin-top:-5px">&nbsp Paypal
            </label>
             <br />
             <br />
            <label class="c-input c-radio">
              <input id="radio2" name="radio" type="radio" value="http://www.mbank.cz/osobni/">
              <span class="c-indicator"></span>
              <img src="img/payments/mbank.png" width="80" style="margin-top:-5px">&nbsp mBank
            </label>
             <br />
             <br />
            <label class="c-input c-radio">
              <input id="radio2" name="radio" type="radio" value="http://example.com/platebnikarta">
              <span class="c-indicator"></span>
              <img src="img/payments/visa_mastercard.png" width="80" style="margin-top:-5px">&nbsp Platební karta
            </label>
            <hr>            

            <button type="submit" class="btn btn-primary">Pokračovat v placení</button>
</form>

在文件末尾我有 javascript,它根据单选按钮选择打开新窗口:

$(document).ready(function(){
      $("#platba").submit(function(){
        event.preventDefault();
        var loc = $('input[name="radio"]:checked').val();
        window.open(loc,'_blank');
        //self.close ();
      });

    });

它在 Google Chrome 和 IE 中运行良好,但在 Firefox 中它只是将单选按钮的值添加到地址栏中。 示例:

http://something/something/something/something.php?radio=https%3A%2F%2Fwww.paypal.com%2Fuk%2Fwebapps%2Fmpp%2Fhome

【问题讨论】:

  • 不确定这是否会导致您的问题,但我注意到的第一件事是您有两个具有相同id="radio2" 的收音机! (第二个和第三个)。第三个应该是id="radio3"
  • 也许窗口被阻止视为弹出窗口?尝试删除 _blank,它应该作为新标签打开。
  • 谢谢,我换了id,问题依旧。
  • 删除“_blank”并没有解决问题。
  • afaik。在物理点击事件(没有模拟)之后没有像 40 毫秒那样触发的每个 window.open 都被认为是一个弹出窗口。 使用模态框

标签: javascript jquery html firefox


【解决方案1】:

event.preventDefault 中的 event 未定义。您必须在调用它的函数中定义它:

$("#platba").submit(function(event) {
  event.preventDefault();
});

这是您更正的代码,它也适用于 Firefox(我自己在 jsfiddle 上测试过):https://jsfiddle.net/duzwo5bk/7/

这里是代码。 注意:它在这里不起作用,因为您不能从 StackOverflow 上的这些 sn-ps 弹出窗口

我还修复了你的第三台收音机的 ID :)

$(document).ready(function() {
  $("#platba").submit(function(event) {
    event.preventDefault();
    var loc = $('input[name="radio"]:checked').val();
    window.open(loc, '_blank');
    //self.close ();
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="platba">
<label class="c-input c-radio">
  <input id="radio1" name="radio" type="radio" value="https://www.paypal.com/uk/webapps/mpp/home">
  <span class="c-indicator"></span>
  <img src="img/payments/paypal.png" width="80" style="margin-top:-5px">&nbsp; Paypal
</label>
<br />
<br />
<label class="c-input c-radio">
  <input id="radio2" name="radio" type="radio" value="http://www.mbank.cz/osobni/">
  <span class="c-indicator"></span>
  <img src="img/payments/mbank.png" width="80" style="margin-top:-5px">&nbsp; mBank
</label>
<br />
<br />
<label class="c-input c-radio">
  <input id="radio3" name="radio" type="radio" value="http://example.com/platebnikarta">
  <span class="c-indicator"></span>
  <img src="img/payments/visa_mastercard.png" width="80" style="margin-top:-5px">&nbsp; Platební karta
</label>
<hr>

<button type="submit" class="btn btn-primary">Pokračovat v placení</button>
</form>

【讨论】:

  • 谢谢,它解决了我的问题。
  • 不客气!专业提示:在 Firefox 中打开控制台(右键单击页面上的任意位置,然后单击检查元素,然后选择控制台选项卡),您会看到您的:event is undefined 错误:)
猜你喜欢
  • 1970-01-01
  • 2013-09-24
  • 1970-01-01
  • 2017-12-11
  • 2019-08-07
  • 2013-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多