2016-11-16 10 views
7

В моем приложении мне нужно разрешить пользователю щелкнуть правой кнопкой мыши изображение, чтобы сохранить изображение на диск , Тем не менее, я заметил, что с моим конкретным кодом Google Chrome является единственным браузером, который не позволяет пользователю «Сохранить изображение как ..», если пользователь сначала не выбирает Open image in new tab, а затем, оттуда, выберите Save image as...«Сохранить изображение как ..» не работает в Google Chrome при использовании window.open() и document.write()

Поскольку все другие основные браузеры (в том числе Mobile Chrome) работают должным образом, я не уверен, что я не реализую свой код стандартным/правильным способом или проблема с 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> 

Является ли это проблемой с Chrome или есть другой способ, который я могу использовать window.open() вместе с document.write(), чтобы получить Chrome работать, как и другие браузеры (т.е. без необходимости, во-первых, выбрать Open image in new tab.

ответ

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

Смежные вопросы