Показать сообщение отдельно
  #5 (permalink)  
Старый 02.07.2019, 10:21
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от selevo
А эту нет. Как решить ?
Копирование текста в буфер обмена доступно только в безопасном контексте. Также вы можете попробовать опасное копирование текста.
if(isSecureContext) {
    navigator.clipboard.writeText(url);
} else {
    // ОПАСНОЕ КОПИРОВАНИЕ ТЕКСТА
    const input = document.createElement("input");
    document.body.appendChild(input);
    input.value = url;
    input.style.cssText = `
        position: fixed;
        top: 0;
        opacity: 0;
    `;
    input.focus();
    input.select();
    const result = document.execCommand("copy");
    if(result === "unsuccessful") {
        console.error("Failed to copy text.");
    }
    document.body.removeChild(input);
}


Я вижу, что вы используете скрипт для GM или TM. Вы можете использовать тогда метод GM.setClipboard.

// ==UserScript==
// @name         Копировать адрес картинки/ссылки Cmd+RightClick
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        http://*/*
// @match        https://*/*
// @grant        GM.setClipboard
// ==/UserScript==

addEventListener("contextmenu", event => {
    const { target, metaKey, ctrlKey } = event;

    if(!metaKey && !ctrlKey) return;
    let url;

    if(target.nodeName === "IMG") {
        url = target.src;
    } else {
        const link = target.closest("a");
        if(link) url = link.href;
    }

    if(url == null) return;

    event.preventDefault();
    GM.setClipboard(url);
    console.log(`URL: ${url}`);
});


Сообщение от ksa
Тестовый пример это файл с минимальной разметкой и кодом, позволяющий иллюстрировать проблему.
А это не иллюстрирует? Или ваше иллюстрировать имеет некий тайный смысл?

Последний раз редактировалось Malleys, 02.07.2019 в 11:25.
Ответить с цитированием