window.open 被攔截的處理方式

ajax提交中新標(biāo)簽頁(yè)打開(kāi)響應(yīng)返回的url

  • 錯(cuò)誤處理方式:

    ##觸發(fā)按鈕
    <a href="javascrip:void();" data-url="xxxx" id='jiedong' class='tixian'>解凍</a>
    
    ##綁定事件
    $("#jiedong").click(function (e) {
        $this = $(this);
        $this.text("處理中...");
        $.ajax({
            url: "xxxxxx",
            type: 'get',
            data: {},
            success: function(data){
                $this.text("解凍");
                if(data.status == 1) {
                    #新標(biāo)簽打開(kāi)頁(yè)面
                    window.open($this.attr("data-url");
                } else {
                  .....
                }
            },
            error: function () {
                alert("服務(wù)器異常");
            }
        });
    });
    
    
  • 原因分析及處理方案:

    • 原因:
      使用window.open打開(kāi)url,瀏覽器會(huì)將該請(qǐng)求當(dāng)成非用戶(hù)操作。
      當(dāng)瀏覽器檢測(cè)到非用戶(hù)操作產(chǎn)生的新彈出窗口,則會(huì)對(duì)其進(jìn)行阻止。因?yàn)闉g覽器認(rèn)為這不是一個(gè)用戶(hù)希望看到的頁(yè)面。
    • 處理方案:
      原a標(biāo)簽正常執(zhí)行新開(kāi)頁(yè)面操作,只是生效時(shí)間放到執(zhí)行click操作之后,即:a標(biāo)簽綁定data-remote=”true“屬性,延遲執(zhí)行超鏈接動(dòng)作,當(dāng)click返回true時(shí)才執(zhí)行href的鏈接。
      注意:此時(shí)ajax提交要進(jìn)行同步處理,不然超鏈接是不會(huì)等待ajax的請(qǐng)求處理完才執(zhí)行了跳轉(zhuǎn)操作。(默認(rèn)是異步處理,所以需要設(shè)置async:true;)
  • 修正后處理方式:

    ##觸發(fā)按鈕
    <a href="xxxx" id='jiedong' class='tixian' data-remote="true" target="_blank">解凍</a>
      
    ## 綁定事件
    $("#jiedong").click(function (e) {
       $this = $(this);
       ## 設(shè)置標(biāo)桿,便于ajax的處理結(jié)果向外滲透
       var flag = false;
       $this.text("處理中...");
       $.ajax({
            url: "xxxxxx",
            type: 'get',
            async: false,  ## 重要
            data: {},
            success: function(data){
                $this.text("解凍");
                if(data.status == 1) {
                      flag = true; ##向外滲透結(jié)果
                  } else {
                    .....
                  }
             },
             error: function () {
                  alert("服務(wù)器異常");
             }
          });
          
          ## 決定是否執(zhí)行超鏈接動(dòng)作
          return flag;
      });
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線(xiàn)程,因...
    小菜c閱讀 7,378評(píng)論 0 17
  • 1.JQuery 基礎(chǔ) 改變web開(kāi)發(fā)人員創(chuàng)造搞交互性界面的方式。設(shè)計(jì)者無(wú)需花費(fèi)時(shí)間糾纏JS復(fù)雜的高級(jí)特性。 1....
    LaBaby_閱讀 1,277評(píng)論 0 1
  • 1.JQuery 基礎(chǔ) 改變web開(kāi)發(fā)人員創(chuàng)造搞交互性界面的方式。設(shè)計(jì)者無(wú)需花費(fèi)時(shí)間糾纏JS復(fù)雜的高級(jí)特性。 1....
    LaBaby_閱讀 1,512評(píng)論 0 2
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,680評(píng)論 19 139
  • 偶爾間看到兒子寫(xiě)的一篇作文: 我的媽媽很傻,她每天早上起來(lái)洗臉,都要啪啪啪地打臉。 我問(wèn)她為什么要打自己的臉,她說(shuō)...
    一只黃胖閱讀 335評(píng)論 13 6

友情鏈接更多精彩內(nèi)容