Работа с буфером обмена в браузере

Boom Zoom

Client
Регистрация
13.03.2020
Сообщения
81
Благодарностей
10
Баллы
8
Здравствуйте! Подскажите пожалуйста, зенка умеет работать с буфером обмена. Например, когда в браузере копируются какие-то данные по кнопке и потом их нужно вставить в переменную из буфера обмена. Как это реализовать? В экшенах ничего пока не нашел. Подскажите пожалуйста.
 
  • Спасибо
Реакции: Astronauo

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 781
Благодарностей
2 442
Баллы
113
Здравствуйте! Подскажите пожалуйста, зенка умеет работать с буфером обмена. Например, когда в браузере копируются какие-то данные по кнопке и потом их нужно вставить в переменную из буфера обмена. Как это реализовать? В экшенах ничего пока не нашел. Подскажите пожалуйста.
C#:
lock(SyncObjects.InputSyncer){
    try {
        return System.Windows.Forms.Clipboard.GetText(); // Если в буфере есть текст
    }
    catch {
        return string.Empty; // Если ошибка
    }
}
100227
 

Boom Zoom

Client
Регистрация
13.03.2020
Сообщения
81
Благодарностей
10
Баллы
8
Огромное спасибо
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 781
Благодарностей
2 442
Баллы
113
Огромное спасибо
Хорошо, что проблема решена.

Только нужно иметь ввиду, что если шаблон в одном потоке возьмет данные в буфер обмена - а в другом потоке буфер обмена будет прочитан - то другой поток получит доступ к буферу обмена, который был получен в первом потоке. Либо когда например работает шаблон, а Вы вручную скопируете что-то в буфер обмена - тогда шаблон в переменную положит те данные, которые были скопированы Вами вручную.

Другими словами - если мы работаем в 1 поток, или когда мы работаем в проджект мейкере и не используем буфер обмена вручную в момент работы шаблона - тогда все ок. Как только у нас много потоков или когда мы вручную что-то копируем в буфер - тогда целостность данных однозначно будет нарушена (в переменную может быть записано не то, что мы ожидали).

Таким образом, в идеале - не использовать буфер обмена в своих шаблонах, использовать его нужно только когда понимаете риски и понимаете как это работает... В большинство случаев совсем не обязательно использовать буфер обмена, чтобы скопировать что-то на страничке, а если уж совсем никак без буфера обойтись - тогда в цикле ещё нужно проверять, находится в буфере/переменной именно то что ожидалось, или там уже какие-то искаженные данные.
 
  • Спасибо
Реакции: Garantez

Boom Zoom

Client
Регистрация
13.03.2020
Сообщения
81
Благодарностей
10
Баллы
8
Очень важное уточнение, спасибо.
 

Astronauo

Client
Регистрация
22.08.2023
Сообщения
60
Благодарностей
3
Баллы
8
Хорошо, что проблема решена.

Только нужно иметь ввиду, что если шаблон в одном потоке возьмет данные в буфер обмена - а в другом потоке буфер обмена будет прочитан - то другой поток получит доступ к буферу обмена, который был получен в первом потоке. Либо когда например работает шаблон, а Вы вручную скопируете что-то в буфер обмена - тогда шаблон в переменную положит те данные, которые были скопированы Вами вручную.

Другими словами - если мы работаем в 1 поток, или когда мы работаем в проджект мейкере и не используем буфер обмена вручную в момент работы шаблона - тогда все ок. Как только у нас много потоков или когда мы вручную что-то копируем в буфер - тогда целостность данных однозначно будет нарушена (в переменную может быть записано не то, что мы ожидали).

Таким образом, в идеале - не использовать буфер обмена в своих шаблонах, использовать его нужно только когда понимаете риски и понимаете как это работает... В большинство случаев совсем не обязательно использовать буфер обмена, чтобы скопировать что-то на страничке, а если уж совсем никак без буфера обойтись - тогда в цикле ещё нужно проверять, находится в буфере/переменной именно то что ожидалось, или там уже какие-то искаженные данные.
Здравствуйте! Подскажите, а без этого страшного кода никак не скопировать данные со страницы? Я выделяю элемент, но нигде не вижу ни содержащегося в нем нужного мне текста, ни каких-то кнопок/блоков действий, чтобы взять значение или взять его из буфера обмена :bh:
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)