2011-03-15 5 views
2

jQuery에서 ajax 함수가 있는데 완전한 함수를 사용하여 새 창이나 탭에서 URL을 열려고합니다.window.Open 팝업창 새 창 대신

<a href="#" onclick="Add('1','http://www.google.com');return false;">Link</a> 

그리고 :

function Add(ID, url) 
{ 
    var data = "{'ID' : '" + ID + "'}"; 
    $.ajax({ 
     type: "POST", 
     url: "Function.ashx/Add", 
     data: data, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     complete: function() 
     { 
      window.open(url); 
     } 
    }); 
} 

window.open 기능은 팝업으로 작동하지만 나는 새 창에서 링크를 열려면. w3School Example가 감사합니다. 그러나 브라우저가이를 팝업으로 감지하여 차단합니다.
내 코드에 어떤 문제가 있습니까?

+0

나는 팝업을 유발하지 않고 프로그래밍 방식으로 새 창을 열 수 생각하지 않습니다 차단제. –

+0

@Pekka : w3 예제를 보면 팝업이 아닌 창으로 열립니다. – Raika

+0

mmmm, 생각해보십시오. * Ajax 콜백의 경우와 달리 수동으로 클릭을 트리거하기 때문입니다. 그러나 좋은 질문, 무슨 일이 일어나는지보고 싶습니다. –

답변

1

URL을로드하기 위해 AJAX 호출이 완료 될 때까지 특별히 기다리는 이유는 무엇입니까?

단순히 AJAX 호출을 시작하고 바로 다음에 새 창을 열지 않는 이유는 무엇입니까?

예 : 나는 w3cschool.com 같은데요

<a href="#" onclick="Add('1','http://www.google.com');return false;">Link</a> 

 

function Add(ID, url) 
{ 
    var data = "{'ID' : '" + ID + "'}"; 
    $.ajax({ 
     type: "POST", 
     url: "Function.ashx/Add", 
     data: data, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json" 
    }); 

    window.open(url); 
} 
+0

그것의 방아쇠를 내 beacuse 및 내 아약스 Function.ashx 내 추가 기능을 호출하지 않습니다. 샘플을 쓸 수 있니? – Raika

+0

내 코드와 당신 코드의 차이점은 무엇입니까? 그것의 작품. – Raika

+0

코드에서 window.open() 호출이 클릭에 의해 시작되지 않았기 때문입니다. AJAX 콜백에 의해 시작됩니다. 내 코드에서는 AJAX 콜백이없고 window.open() 호출은 사용자 클릭에 의해 시작된 Add() 함수 내에서 AJAX 호출을 한 직후 이루어 지므로 브라우저는 창문 열어. – Stephen

0

아마 공인 과외 사이트 것에 대해 팝업 previlige을 가져옵니다.

AFAIK과 같이 직접적인 사용자 상호 작용 (예 : 클릭)없이 추가 창을 여는 방법은 '팝업'으로 간주되어 팝업 차단기를 사용하는 대부분의 브라우저에서 차단됩니다. 가장 좋은 건 아마 클릭시 링크를 열고 AJAX 완료시 당신이 원하는대로 주입되어

<a href="http://www.google.com" onclick="Add('1')">Link</a> 

function Add(ID, url) 
{ 
    var newWindow = window.open(url); 
    var data = "{'ID' : '" + ID + "'}"; 
    $.ajax({ 
     type: "POST", 
     url: "Function.ashx/Add", 
     data: data, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     complete: function (data) 
     { 
      // do whatever you want with newWindow 
     } 
    }); 
}