Скрип не копирует url некоторых картинок
Вложений: 1
Скрипт:
// ==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&mode=view"><img src="./download/file.php?id=37007&t=1" alt="im765.jpg"></a><br> <span class="gensmall">im765.jpg [ 227.15 Кб | Просмотров: 774 ]</span> http://forum.easyelectronics.ru/view...24580&start=75 |
Цитата:
|
))
да там вроде больше ниче важного нет влияющего на результат вставил весь скрипт |
Цитата:
Тестовый пример это файл с минимальной разметкой и кодом, позволяющий иллюстрировать проблему. Благо на этом форуме валом таких! А ты как кидал куски, так и продолжаешь. Только кусок теперь больше... |
Цитата:
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}`);
});
Цитата:
|
Цитата:
|
selevo,
Прикол в том что e.target не всегда будет img даже если вы кликаете по картинке и точно не промахиваетесь. поверх может быть какой нибудь овер, или img может быть фоном. |
как по-свободнее будет, проверю.
Спасибо. Malleys, |
| Часовой пояс GMT +3, время: 08:52. |