Подтвердить что ты не робот

Скопировать изображение в буфер обмена с javascript только в Chrome

Возможно ли, чтобы javascript скопировал изображение в буфер обмена? Я ищу реплицировать функцию "Копировать изображение", которую Chrome имеет, когда вы правы /Ctrl щелкните изображение в браузере.

Я видел решения для текста, некоторые флэш-решения для текста. Но меня интересуют только данные изображения. И только в Chrome. Для этого требования не волнует IE или FF.

4b9b3361

Ответ 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);
  });

Ссылка