2016-11-16 34 views
7

Trong ứng dụng của tôi, tôi cần cho phép người dùng nhấp chuột phải vào hình ảnh để lưu hình ảnh vào đĩa . Tuy nhiên, tôi đã nhận thấy rằng với mã cụ thể của mình, Google Chrome là trình duyệt duy nhất không cho phép người dùng "Lưu hình ảnh dưới dạng .." trừ khi người dùng đầu tiên chọn Open image in new tab và sau đó, từ đó, chọn Save image as..."Lưu hình ảnh dưới dạng .." không hoạt động trong Google Chrome khi sử dụng window.open() và document.write()

Vì tất cả các trình duyệt chính khác (bao gồm cả Chrome di động) hoạt động như mong đợi, tôi không chắc liệu tôi có đang triển khai mã theo cách chuẩn hay chính xác hay không.

Ví dụ:

HTML Sau đây là một phiên bản rút gọn của những gì tôi đang làm. Nó sẽ cho phép bạn bấm vào một nút để mở một cửa sổ mới sẽ chứa một hình ảnh.

Để kiểm tra/xác nhận sự cố tôi đã mô tả ở trên, nhấp chuột phải vào hình ảnh và chọn Save image as.. - Bạn sẽ nhận thấy rằng không có gì xảy ra. Tuy nhiên, nếu bạn nhấp chuột phải vào hình ảnh và chọn Open image in new tab, bạn sẽ có thể Save image as.. từ đó.

<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> 

này là một vấn đề là với Chrome hoặc là có một cách khác mà tôi có thể sử dụng window.open() cùng với document.write() để có được Chrome để hoạt động như các trình duyệt khác (tức mà không cần phải, đầu tiên, chọn Open image in new tab.

Trả lời

6

tôi tìm thấy một giải pháp có vẻ hoạt động. Làm cho tab có thuộc tính vị trí. Tôi không chắc chắn tại sao lại cần thiết, nhưng nó hoạt động cho tôi trên 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

Tôi phải đặt 'window.location. href = "#" sau đó nó làm việc cho tôi. Tôi đang sử dụng TypeScri pt. – goflo

Các vấn đề liên quan