2009-07-01 4 views
2

Javascript를 사용하여 IE6 파일을 다운로드하고 싶습니다. Javascript를 사용하여 즉석에서 만들어집니다. 이 파일은 웹 서버에 없습니다. 여기에 작은 예입니다 :다운로드 Javascript가 IE6에서 XML을 생성했습니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <head> 
    <script type="text/javascript"> 
function clicked() { 
    var xml = "<data>Just for testing</data>"; 
    document.open("text/xml", "replace"); 
    document.write(xml); 
} 
    </script> 
    </head> 
    <body> 
    <input type="button" value="Download" onclick="clicked();" /> 
    </body> 
</html> 

대신 브라우저 창에서 XML을로드, 나는 그것이 어디에 그들이 파일을 사용하지 않고 너무가 저장 될 수있는 데이터를 다운로드하는 사용자에게 메시지를 표시하기 위해 IE6를 야기 할 -> 다른 이름으로 저장. 어떤 아이디어?

답변

2

IE6를 들어 당신은 당신의 document.write()document.execCommand()을 사용할 수 있어야합니다 :

document.execCommand('SaveAs',true,'file.xml'); 

이 표준의 일부가 아닌 단지 IE 맛 브라우저에서 작동합니다.

+1

이것이 작동하는 것 같습니다. 브라우저에서 내용을 표시하지 못하게 할 수 있습니까? 뒤로 버튼과 새로 고침은 원본 페이지를 다시로드하지 않습니다. –

+0

보이지 않는 iframe 또는 0x0 iframe을 만들고 주 문서 대신 xml을 해당 문서에 쓸 수 있습니다. –

-1

아니요, 불가능합니다. 웹 브라우저는 엄격하게 허용하지 않습니다. JavaScript를 통해서만 파일을 디스크에 저장하는 기능은 확인 팝업이 나타나더라도 매우 위험합니다.

편집 : 다른 답변 덕분에 IE의 일부 버전에서는이 동작이 가능하다는 사실을 알게되었습니다.

+0

나는 그것이 그렇게 될 것이라고 생각했다. 링크를 클릭하고 서버에서 악의적 인 것을 다운로드하는 것보다 위험한 이유는 무엇입니까? –

+1

XSS + 사용자는 아마도 –

+0

을 클릭 할 필요가 없습니다. 동의하면 브라우저가 허용하는 것은 끔찍한 행동입니다. 그러나 IE는 object.execCommand를 통해이를 허용합니다 - 브라우저가 유일한 브라우저라는 사실에 놀라지는 않습니다;) –

0

데이터를 클라이언트 측에서 생성해야하는 경우 서버에 다시 게시하여 다운로드 가능한 파일로 반환 할 수 있습니다.

+0

서버가 없으며 인트라넷의 공유를 실행합니다. 이 작업을 수행하려면 Rails 응용 프로그램을 작성하고 싶지만 안타깝게도 옵션이 아닙니다. 나는 가진 것을해야 해. –

관련 문제