2013-09-18 3 views
17

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

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

+0

Вы нашли ответ на свой вопрос? – Scott

+2

Возможный дубликат [Копировать изображение в буфер обмена из браузера в Javascript?] (Http://stackoverflow.com/questions/2321606/copy-image-to-clipboard-from-browser-in-javascript) – hichris123

+0

В моем случае это является расширением браузера, если это имеет значение. –

ответ

9

Update: От Chrome 43, Firefox 41, Opera 29 и Safari 10 года, любой сайт может сделать document.execCommand("copy") и document.execCommand("cut") в любое время.


Устаревшие:

Подобно тому, как Copy Image to Clipboard from Browser in Javascript? объяснил, что это дыра в безопасности, если какой-либо веб-сайт имеет право принимать/помещать данные в операционную систему пользователей только потому, что она осуществлять навигацию на вредоносный веб-сайт.

Если вы используете только Chrome, у вас есть два решения.

  1. Запишите расширение Chrome и попросите его установить его.

  2. Запишите приложение Chrome и попросите его установить его. Вашим пользователям не нужно запускать приложение Chrome. Скрипты в доменах, установленные зарегистрированными регистрами Chrome App, автоматически получат эту привилегию.

Ваше приложение/расширение должно объявить clipboardWrite привилегию (см https://developer.chrome.com/extensions/permissions).

После этого вы можете позвонить по телефону document.execCommand("Copy") после того, как вы обработали window.selection, чтобы указать на изображение, которое хотите скопировать.

+2

Я попытался использовать Chrome 41 в своем приложении Chrome с правильным разрешением буфера обмена, window.selection следует за document.execCommand («Копировать») не работает. и clipboardData.setData (mimeType, blob/or/file) тоже не работает. это происходит только для изображения, все остальное (текст, htm, мой собственный формат данных), кажется, работает нормально. – Imskull

+0

Могу ли я сделать это в расширении firefox? –

+0

Как это сделать для изображений? –

-2

Да возможно с: clipboard.js но вам нужно создать programaticaly скрипта для обработки изображения

Link

Только нужно, если браузер хром:

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

Link

Если вам нужно контекстное меню, см. Его:

// 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); 
    }); 

Link

+0

clipboard.js не позволяет копировать изображения ... –

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