2013-09-23 80 views
-4

我有以下問題與jQuery:AJAX調用與標籤頁中打開

$(function() { 

    var linkCorretto = $("#id").text(); 
    var authWindow; 

    $('a[data-reveal-id]').live('click', function(e) { 
     e.preventDefault(); 
     var modalLocation = $(this).attr('data-reveal-id'); 
     $('#' + modalLocation).reveal($(this).data()); 
    }); 

    $.fn.reveal = function(options) { 

     var defaults = { 
      animation: 'fadeAndPop', 
      animationspeed: 300, 
      closeonbackgroundclick: false, 
      dismissmodalclass: 'close' 
     }; 

     var options = $.extend({}, defaults, options); 
     var altezza = $(window).height(); 
     altezza = altezza * 0.5; 

     return this.each(function() { 

      var modal = $(this), 
      modalheight = modal.height() * 0.8; 
      topMeasure = parseInt(modal.css('top')), 
      topOffset = modal.height() + topMeasure, 
      locked = false, 
      modalBG = $('.reveal-modal-bg'); 

      if (modalBG.length == 0) { 
       modalBG = $('<div class="reveal-modal-bg" />').insertAfter(modal); 
      } 

      modal.bind('reveal:open', function() { 
       modalBG.unbind('click.modalEvent'); 
       $('.' + options.dismissmodalclass).unbind('click.modalEvent'); 
       if (!locked) { 
        lockModal(); 

        //modal.css({'opacity' : 0, 'visibility' : 'visible', 'top': $(window).scrollTop()+topMeasure}); 
        modal.css({ 
         'opacity': 0, 
         'visibility': 'visible', 
         'top': $(window).scrollTop() + altezza - modalheight 
        }); 
        $('body').css('overflow-y', 'hidden') 
         modalBG.fadeIn(options.animationspeed/2); 
        modal.delay(options.animationspeed/2).animate({ 
         "opacity": 1 
        }, options.animationspeed, unlockModal()); 

       } 
       modal.unbind('reveal:open'); 

       $('.warning').hide(); 
       $('.loading').hide(); 
       $('.loadingoff').show(); 
       $('.reveal-modal').addClass('background'); 

      }); 

      modal.bind('reveal:close', function() { 

       if (!locked) { 
        lockModal(); 

        modalBG.delay(options.animationspeed).fadeOut(options.animationspeed); 
        modal.animate({ 
         "opacity": 0 
        }, options.animationspeed, function() { 
         modal.css({ 
          'opacity': 1, 
          'visibility': 'hidden', 
          'top': topMeasure 
         }); 
         $('body').css('overflow-y', 'auto') 
          unlockModal(); 
        }); 

       } 

       modal.unbind('reveal:close'); 

      }); 

      modal.trigger('reveal:open') 

       var closeButton = $('.' + options.dismissmodalclass).bind('click.modalEvent', function() { 
       modal.trigger('reveal:close') 
       }); 

      /* 
          if(options.closeonbackgroundclick) { 
            modalBG.css({"cursor":"pointer"}) 
            modalBG.bind('click.modalEvent', function() { 
             modal.trigger('reveal:close') 
            }); 
          } 
          $('body').keyup(function(e) { 
          if(e.which===27){ modal.trigger('reveal:close'); } 
          }); 
          */ 

      function unlockModal() { 
       locked = false; 
      } 
      function lockModal() { 
       locked = true; 
      } 

     }); 

    } 
    // $.fn.reveal 
    $(".accetta").click(function() { 

     var dati = new Object(); 
     dati = $("#listaCarte").val(); 

     var imageUrl = ''; 
     var x = ($('.reveal-modal').height()); 
     $('.loadingoff').hide(); 
     $('.loading').css('height', x).show(); 
     $('.reveal-modal').removeClass('background'); 

     $('<input>').attr({ 
      type: 'hidden', 
      id: 'linkDaSostituire', 
      name: 'linkDaSostituire', 
      value: linkCorretto, 
      }); 

     setTimeout(function() { 
      $.ajax({ 

       type: "POST", 
       url: "/portalppay/ScontiServlet", 
       data: { 
        "linkDaSostituire": linkCorretto, 
        "cartaSelezionata": dati 
       }, 
       dataType: "html", 

       success: function(msg) { 
        //window.location = msg; 
        authWindow = window.open('about:blank'); 
        authWindow.location.replace(msg); 
        //window.open(msg); 
        //var win=window.location(msg, '_blank'); 
        //win.focus(); 
        $('.reveal-modal').trigger('reveal:close'); 
       }, 

       error: function() { 
        $('.loadingoff').hide(); 
        $('.loading').hide(); 
        $('.warning').css('height', x - 40).show(); 
       } 

      }); 
     }, 400); 

    }); 
    // .accetta 
    }); 

當我觸發Ajax調用,用的代碼塊:

url: "/portalppay/ScontiServlet", 

我得到一個URL的答案而我在瀏覽器中看到下面的代碼:

authWindow = window.open('about:blank'); 
authWindow.location.replace(msg); 

的問題是,我無法呈現在新標籤頁的鏈接,但總是在新的彈出窗口! 有人可以幫我解決問題嗎?

+1

這是一個問題的代碼太多。首先縮小你的問題。此外,本網站主要講英語,您可能不會收到許多答案,而您的部分問題則以其他語言提供。 – jbabey

+0

「ilproblemaèche non riesco a far visualizzare il link in una nuova tab,ma semper in un nuovo popup !!」英文請:D – Krzysiek

+0

對不起:問題是我無法在新標籤中顯示鏈接,但始終處於新彈出窗口中!有人可以幫我解決問題嗎? – reve

回答

0

您是否檢查了瀏覽器設置?

這是瀏覽器選擇如何打開新窗口。

在Firefox中有在新選項卡中打開新窗口而不是選項,它告訴瀏覽器是否必須在新選項卡或新窗口中打開新窗口。

enter image description here

請注意,這隻有當你調用window.open沒有strWindowFeatures參數,指定它迫使瀏覽器(好吧,至少Firefox和瀏覽器,Chrome瀏覽器似乎並未有類似的選項)在新窗口中打開鏈接。

欲瞭解更多信息:https://developer.mozilla.org/en-US/docs/Web/API/window.open