Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.07.2019, 11:17
Аватар для selevo
Кандидат Javascript-наук
Отправить личное сообщение для selevo Посмотреть профиль Найти все сообщения от selevo
 
Регистрация: 13.03.2013
Сообщений: 131

Скрип не копирует url некоторых картинок
Скрипт:
// ==UserScript==
// @name         js_ все сйты ссылка в буфер по CTRL+ПКМ
// @namespace    [url]http://tampermonkey.net/[/url]
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        [url]http://*/*[/url]
// @match        [url]https://*/*[/url]
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
document.body.oncontextmenu = function(e)
{

if (e.target.tagName == 'IMG' && e.ctrlKey)
    {
		e.preventDefault();
      navigator.clipboard.writeText(e.target.src);
        console.log("IMG URL: "+e.target.src);
        return;
	}
 var that = e.target.closest('a');
      if (that && e.ctrlKey)
      {
        e.preventDefault();
        navigator.clipboard.writeText(that.href);
        console.log("\n"+
                   "URL ссылки:" +that.href)
      }
	}


/*     document.addEventListener('contextmenu',e =>
 {
            if (e.target.tagName == 'IMG' && e.ctrlKey)
          {
		e.preventDefault();
      navigator.clipboard.writeText(e.target.src);
        console.log("\n"+
                   "IMG URL: "+e.target.src);
        return;
          }


    let that = e.target.closest('a');
      if(e.target.closest('a') && e.ctrlKey)
      {
        e.preventDefault();
        navigator.clipboard.writeText(that.href);
        console.log("\n"+
                    "URL ссылки:" +that.href);


      }

}); */

    // Your code here...
})();


Вот такую ссылку берет
<div class="styles-root-12rcO"><img class="styles-img-2OLWK" itemprop="image" src="//09.img.avito.st/208x156/5735477009.jpg" alt="Корпус CaseLabs Merlin SM8 чёрного цвета"></div>


А эту нет. Как решить ?
<div class="attachcontent">
			<a href="./download/file.php?id=37007&amp;mode=view"><img src="./download/file.php?id=37007&amp;t=1" alt="im765.jpg"></a><br>
			<span class="gensmall">im765.jpg [ 227.15 Кб | Просмотров: 774 ]</span>

http://forum.easyelectronics.ru/view...24580&start=75
Изображения:
Тип файла: jpg ScreenShot000331.jpg (216.1 Кб, 3 просмотров)

Последний раз редактировалось selevo, 01.07.2019 в 12:55.
Ответить с цитированием
  #2 (permalink)  
Старый 01.07.2019, 12:18
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

Сообщение от selevo
Как решить ?
Для начала сделать полный тестовый пример, а не показать огрызки...
Ответить с цитированием
  #3 (permalink)  
Старый 01.07.2019, 12:56
Аватар для selevo
Кандидат Javascript-наук
Отправить личное сообщение для selevo Посмотреть профиль Найти все сообщения от selevo
 
Регистрация: 13.03.2013
Сообщений: 131

))
да там вроде больше ниче важного нет влияющего на результат
вставил весь скрипт

Последний раз редактировалось selevo, 01.07.2019 в 13:11.
Ответить с цитированием
  #4 (permalink)  
Старый 02.07.2019, 07:51
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

Сообщение от selevo
вставил весь скрипт
У тебя странное понятие тестового примера...

Тестовый пример это файл с минимальной разметкой и кодом, позволяющий иллюстрировать проблему.
Благо на этом форуме валом таких!

А ты как кидал куски, так и продолжаешь. Только кусок теперь больше...
Ответить с цитированием
  #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.
Ответить с цитированием
  #6 (permalink)  
Старый 02.07.2019, 15:40
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

Сообщение от Malleys
А это не иллюстрирует?
Ты спец - тебе видней...
Ответить с цитированием
  #7 (permalink)  
Старый 03.07.2019, 08:22
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

selevo,
Прикол в том что e.target не всегда будет img даже если вы кликаете по картинке и точно не промахиваетесь. поверх может быть какой нибудь овер, или img может быть фоном.
Ответить с цитированием
  #8 (permalink)  
Старый 09.07.2019, 09:22
Аватар для selevo
Кандидат Javascript-наук
Отправить личное сообщение для selevo Посмотреть профиль Найти все сообщения от selevo
 
Регистрация: 13.03.2013
Сообщений: 131

как по-свободнее будет, проверю.
Спасибо.
Malleys,
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Блокирование кнопки на 10 секунд после нажатия sergofedor06 Javascript под браузер 38 24.09.2016 00:40
переделать функцию adspro AJAX и COMET 5 09.03.2015 04:32
Смена картинок на JS. Помогите реализовать! Aggao Элементы интерфейса 3 27.11.2014 23:32
Водяной знак на fancybox bobrina Общие вопросы Javascript 1 03.06.2011 21:11
переход на выбор сайт через поле ввода url (как убрать функцию "открыть все") ? rashid86 Элементы интерфейса 1 31.03.2011 14:54