2012-01-26 2 views
2

이 XAgent와 함께 작동하는 것처럼 보이지만 현재 브라우저에서 열립니다. 새 창에서 어떻게 열 수 있습니까?XPage 내부의 XAgent에서 새 창으로 리디렉션하는 방법은 무엇입니까?

이 코드는 XPage의 RenderedResponse에서 실행됩니다. 당신이 누군가가 다운로드 링크를 클릭 할 때 추적하기 위해 노력하고있다처럼

감사

// Track Downloads 

// Setup XAgent stuff 
var exCon = facesContext.getExternalContext(); 
var writer = facesContext.getResponseWriter(); 
var response = exCon.getResponse(); 

var fileLink = param.get("link"); 

// Insert Logging Code here 

facesContext.getExternalContext().redirect(fileLink); 

writer.endDocument() 

답변

6

보인다.

링크를 추적하지 않으면 브라우저에서 다운로드가 시작되고 사용자가 현재 페이지에 머물러있게하는 파일을 직접 가리 킵니다. XAgent 추적 기능을 사용하면 추적을 수행하고 다운로드를 시작하기 위해 응용 프로그램의 다른 페이지로 이동합니다.

XAgent를 호출하는 초기 링크에 '_blank'대상을 추가 할 수 있습니다. 이렇게하면 사용자 브라우저에서 새 창/탭이 열리지 만 다운로드가 시작되면 닫힙니다.

그러나 다운로드를 추적하는이 방법을 사용하면 사이트 사용자가 다운로드 링크를 마우스 오른쪽 단추로 클릭하고 '다른 이름으로 저장'할 수있는 기능이 제거됩니다.

+0

감사! 고맙습니다. 오른쪽 클릭 기능도 유지할 수있는 방법이 있다면 –

0

다운로드 링크의 경우 다운로드 할 파일의 바이트를 직접 제공하는 OutputStream (Writer 또는 Stream! 만있을 수 있음)을 사용하여 파일을 스트리밍하는 것도 고려해 볼 수 있습니다. 헤더에 MIME 유형을 설정해야합니다. 브라우저가 처리 할 수있는 파일 유형이 아닌 경우 다운로드 대화 상자가 나타납니다. 새로운 창을 여는 것은 실제로 요즘 나쁜 스타일로 간주됩니다. 사용자가 새 창을 원할 경우 Ctrl + Click 및 Shift + Click -> 사용자가 결정해서는 안되는 결정 (브라우저를 사용하지 않는 사용자의 웜을 열 수 있음).

+0

링크에서 OutputStream을 사용할 때의 문제는 호출 페이지를 제어 할 수 없다는 것입니다. 파일을 다운로드 한 후 페이지에서 부분적으로 새로 고침이 실패합니다. 숨겨진 iFrame을 사용하여 파일을 다운로드하지만 iPad와 같은 휴대 기기에서는 작동하지 않습니다. –

관련 문제