Скопировать изображение в буфер обмена с javascript только в Chrome
Возможно ли, чтобы javascript скопировал изображение в буфер обмена? Я ищу реплицировать функцию "Копировать изображение", которую Chrome имеет, когда вы правы /Ctrl щелкните изображение в браузере.
Я видел решения для текста, некоторые флэш-решения для текста. Но меня интересуют только данные изображения. И только в Chrome. Для этого требования не волнует IE или FF.
Ответы
Ответ 1
Обновить: Chrome 43, Firefox 41, Opera 29 и Safari 10, любой веб-сайт может выполнять document.execCommand("copy")
и document.execCommand("cut")
в любое время.
Устаревшие
Так же, как Скопировать изображение в буфер обмена из браузера в Javascript?, объясняет, что это дыра в безопасности, если любому веб-сайту разрешено принимать/помещать данные в операционную систему пользователя просто потому что она перешла на вредоносный веб-сайт.
Если вы настроили только Chrome, у вас есть два решения.
-
Запишите расширение Chrome и попросите его установить его.
-
Запишите приложение Chrome и попросите его установить его. Вашим пользователям не нужно запускать приложение Chrome. Скрипты в доменах, установленные зарегистрированными регистрами Chrome App, автоматически получат эту привилегию.
Ваше приложение/расширение должно объявить привилегию clipboardWrite
(см. https://developer.chrome.com/extensions/permissions).
Затем вы можете вызвать document.execCommand("copy")
после того, как вы обработали window.selection
, чтобы указать на изображение, которое вы хотите скопировать.
Ответ 2
Да возможно с помощью: clipboard.js, но вам нужно создать программный script для обработки изображения
Ссылка
Нужно только, если браузер хромирован:
// please note,
// that IE11 now returns undefined again for window.chrome
// and new Opera 30 outputs true for window.chrome
// and new IE Edge outputs to true now for window.chrome
// and if not iOS Chrome check
// so use the below updated condition
var isChromium = window.chrome,
winNav = window.navigator,
vendorName = winNav.vendor,
isOpera = winNav.userAgent.indexOf("OPR") > -1,
isIEedge = winNav.userAgent.indexOf("Edge") > -1,
isIOSChrome = winNav.userAgent.match("CriOS");
if(isIOSChrome){
// is Google Chrome on IOS
} else if(isChromium !== null && isChromium !== undefined && vendorName === "Google Inc." && isOpera == false && isIEedge == false) {
// your Copy paste Script and other script you need run only on chrome
} else {
// Alert this feature is not available in the current browser plz use Chrome
}
Ссылка
ЕСЛИ вам нужно контекстное меню:
// JAVASCRIPT (jQuery)
// Trigger action when the contexmenu is about to be shown
$(document).bind("contextmenu", function (event) {
// Avoid the real one
event.preventDefault();
// Show contextmenu
$(".custom-menu").finish().toggle(100).
// In the right position (the mouse)
css({
top: event.pageY + "px",
left: event.pageX + "px"
});
});
// If the document is clicked somewhere
$(document).bind("mousedown", function (e) {
// If the clicked element is not the menu
if (!$(e.target).parents(".custom-menu").length > 0) {
// Hide it
$(".custom-menu").hide(100);
}
});
// If the menu element is clicked
$(".custom-menu li").click(function(){
// This is the triggered action name
switch($(this).attr("data-action")) {
// A case for each action. Your actions here
case "first": alert("first"); break;
case "second": alert("second"); break;
case "third": alert("third"); break;
}
// Hide it AFTER the action was triggered
$(".custom-menu").hide(100);
});
Ссылка