Букмарклет для создания URL из содержимого буфера обмена - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь создать Bookmarklet, чтобы получить значение id из буфера обмена и перейти к URL-адресу, созданному с этим id.

javascript:(function(){  
 window.location="index.php?module=Accounts&action=DetailView&record=" 
                 + clipboardData.getData('Text');
})()

(это только предполагаетсяработать при нажатии на конкретный сайт, который ожидает эту форму URL)

Основы Bookmarklet работают нормально, сложная часть получает значение буфера обмена, потому что clipboardData не работает.

Я использую Firefox v64 (хотя я хотел бы, чтобы это было общим для большего числа браузеров, по крайней мере, современных).

Теперь, когда я ищу эту проблему, я понимаю, что пытаюсьсделать это не так просто, как кажется - API-интерфейсы буфера обмена в браузерах - сложная задача.Я нашел несколько ответов по этому поводу, лучший из которых выглядит так:

JavaScript получает данные буфера обмена при вставке события (кросс-браузер)

Я тоже пробовал это, ноНе удалось заставить его работать: https://stackoverflow.com/a/27908501/1189711

Мой вопрос здесь: применимы ли какие-либо из этих методов в Bookmarklet ?Если так, я был бы признателен за помощь в этом.Мои навыки в Javascript слишком низки, чтобы понять, как перевести эти ответы на мой случай - а именно, асинхронный материал.

PS - если кто-то хочет найти место для тестирования, просто поместите 84f1bb99-7017-e8dc-94f9-5c179da9f102 в буфер обмена и попробуйтеэто на этом демонстрационном сайте , учетные данные will / will.

1 Ответ

0 голосов
/ 28 декабря 2018

Копия в буфер обмена не может работать из сценариев.Это должно исходить от действий пользователя.

Аналогично, вы не можете вызвать полноэкранный режим из букмарклета.

Из консоли Firefox:

document.execCommand(‘cut’/‘copy’) was denied because it was not
called from inside a short running user-generated event handler.
...