2016-11-16 9 views
7

내 앱에서 사용자가 이미지를 마우스 오른쪽 버튼으로 클릭하여 이미지를 디스크에 저장할 수 있도록 허용해야합니다 . 그러나 사용자 코드가 처음으로 Open image in new tab을 선택한 다음 여기에서 Save image as..을 선택하지 않으면 내 특정 코드로 Google 크롬이 사용자가 "이미지를 ..로 저장"할 수없는 유일한 브라우저임을 알게되었습니다.window.open() 및 document.write()를 사용할 때 Google 크롬에서 "이미지를 다른 이름으로 저장"이 작동하지 않음

다른 모든 주요 브라우저 (모바일 크롬 포함)는 예상대로 작동하므로 표준/올바른 방식으로 코드를 구현하지 않거나 Chrome에 문제가 있는지 확실하지 않습니다.

예 :

다음 HTML은 내가 뭐하는 거지의 옷을 벗었 버전입니다. 버튼을 클릭하면 이미지가 포함 된 새 창을 열 수 있습니다.

위에서 설명한 문제를 테스트/확인하려면 이미지를 마우스 오른쪽 단추로 클릭하고 Save image as..을 선택하십시오. 아무 일도 일어나지 않을 것입니다. 그러나 이미지를 마우스 오른쪽 버튼으로 클릭하고 Open image in new tab을 선택하면 거기에서 Save image as.. 수 있습니다.

<html> 
<head> 
    <title></title> 
    <script> 
     function foo() { 
      var tab = window.open(); 
      tab.document.write('<p>Right-click, then click "Save image as ..."</p><img src="http://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.png" />'); 
     } 
    </script> 
</head> 
<body> 
    <button onclick="foo();">Open</button> 
</body> 
</html> 

은 크롬으로이 문제인가, 아니면 내가 (즉, 필요없이, 첫째, Open image in new tab을 선택 크롬은 다른 브라우저처럼 작동하도록하는 document.write()과 함께 window.open()를 사용할 수있는 또 다른 방법이있다.

답변

6

I 탭에 위치 속성이 있는지 확인하십시오. 왜 이것이 필요한지 잘 모르겠지만 Chrome 48에서 나에게 적합합니다.

document.write('<html> 
<head> 
    <title></title> 
    <script> 
     function foo() { 
      var tab = window.open(); 
      tab.document.write('<p>Right-click, then click "Save image as ..."</p><img src="http://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.png" />'); 
      tab.document.location = "#"; 
     } 
    </script> 
</head> 
<body> 
    <button onclick="foo();">Open</button> 
</body> 
</html>'); 
+0

나는 window.location을 설정해야했습니다. href = "#"'그러면 나를 위해 일했습니다. TypeScri 태평양 표준시. – goflo