От новичка до гуру: Курсы программирования на CyberDuff

Секретная копия функции JavaScript в буфере обмена в Chrome и Firefox?

Обновить

Похоже, браузеры начинают изначально поддерживать копирование в JS


В консольных окнах Chrome и Firefox на Mac я могу выполнить

copy("party in your clipboard!");

и текст копируется в мой буфер обмена. Я искал SO и Google и, похоже, ничего не нашел по этому поводу.

  • Они специфичны для каждого браузера?
  • Где я могу найти дополнительную информацию об этих функциях JavaScript?

Версии браузера:

alt textальтернативный текст

JavaScript возвращается из консоли Chrome при выполнении копирования

function (object)
    {
        if (injectedScript._type(object) === "node") {
            var nodeId = InjectedScriptHost.pushNodePathToFrontend(object, false, false);
            InjectedScriptHost.copyNode(nodeId);
        } else
            InjectedScriptHost.copyText(object);
    }
  • Что означает этот код?

Вот 2 скриншота выполнения функции копирования в консоли Chrome со всеми отключенными расширениями Chrome.

alt text

alt text


  • Какую консоль Firefox вы используете, консоль ошибок? 30.12.2010
  • Я не программист на C ++, но нашел void InjectedScriptHost::copyText(const String& text) в opensource.apple.com/source/WebCore/WebCore-7533.18.1/inspector/ 30.12.2010
  • @Kai, Хмммммм ... похоже, может быть, он встроен в вебкит с открытым исходным кодом от Apple? 30.12.2010
  • К сожалению, эта команда не работает с расширением Chrome, поэтому она должна быть специфичной для консоли инструментов разработчика в WebKit. 23.03.2011
  • подтвердите, что это также работает с Safari. Хорошая находка! 01.11.2013
  • Похоже, это работает и без Firebug. : D developer.mozilla.org/en-US/docs/Tools/ Web_Console / Помощники 02.04.2016

Ответы:


1

Я считаю, что это предопределенные функции консоли Firebug - по крайней мере, это похоже на Firebug. Например, если вы попытаетесь вызвать window.copy, вы получите предупреждение о том, что функция не определена, поэтому это определенно не функция браузера и не может использоваться в обычных файлах JavaScript. Следующие функции, похоже, также работают в консоли JavaScript, если немного поиграться с ней:

  • clear()
  • profile()

Выполнение их в консоли Chrome раскрывает источник этих функций в консоли Webkit:

> profile
function ()
{
return console.profile.apply(console, arguments)
}

> clear
function ()
{
InjectedScriptHost.clearConsoleMessages();
}

> copy
function (object)
{
if (injectedScript._type(object) === "node")
object = object.outerHTML;
InjectedScriptHost.copyText(object);
}

Хотя Источник Firebug также определяет список функций:

this.clear = function()  // no web page interaction
{
    Firebug.Console.clear(context);
};

this.inspect = function(obj, panelName)  // no web page interaction
{
    Firebug.chrome.select(obj, panelName);
};

this.keys = function(o)
{
    return FBL.keys(o);  // the object is from the page, unwrapped
};

this.values = function(o)
{
    return FBL.values(o); // the object is from the page, unwrapped
};

// etc...
30.12.2010
  • Похоже, что это не работает в Chrome 44 при использовании консоли отладки инспектора узлов. Clipboard is not enabled in hosted mode. Please inspect using chrome://inspect 28.07.2015
  • Отлично. Это работает в Chrome версии 61.0.3163.100 (официальная сборка) (64-разрядная версия)! 14.10.2017
  • У меня инструмент разработчика Chrome выглядит так, как будто он работает, а также работает window.copy('content') (в Firefox работает только copy('content')) 12.07.2018

  • 2

    Здесь вы можете увидеть команду эталонного копирования инструментов Chrome Dev: https://developers.google.com/web/tools/chrome-devtools/console/utilities#copy

    Вы не должны использовать эти команды в реальных кросс-браузерах JS (так сказать, только для отладки на консоли).

    11.07.2018
    Новые материалы

    Отслеживание состояния с течением времени с дифференцированием снимков
    Время от времени что-то происходит и революционизирует часть моего рабочего процесса разработки. Что-то более забавное вместо типичного утомительного и утомительного процесса разработки. В..

    Я предполагаю, что вы имеете в виду методы обработки категориальных данных.
    Я предполагаю, что вы имеете в виду методы обработки категориальных данных. Пожалуйста, проверьте мой пост Инструментарий специалиста по данным для кодирования категориальных переменных в..

    Игра в прятки с данными
    Игра в прятки с данными Я хотел бы, чтобы вы сделали мне одолжение и ответили на следующие вопросы. Гуглить можно в любое время, здесь никто не забивается. Сколько регионов в Гане? А как..

    «Раскрытие математических рассуждений с помощью Microsoft MathPrompter и моделей больших языков»
    TL;DR: MathPrompter от Microsoft показывает, как использовать математические рассуждения с большими языковыми моделями; 4-этапный процесс для улучшения доверия и рассуждений в математических..

    Раскройте свой потенциал в области разработки мобильных приложений: Абсолютная бесплатная серия
    Глава 6: Работа в сети и выборка данных Глава 1: Введение в React Native Глава 2: Основы React Native Глава 3: Создание пользовательского интерфейса с помощью React Native Глава 4:..

    Все о кейсах: Camel, Snake, Kebab & Pascal
    В программировании вы сталкивались с ними при именовании переменной, класса или функции. Поддержание согласованности типов и стилей случаев делает ваш код более читабельным и облегчает совместную..

    Как работает дистанционное парное программирование и почему оно может изменить вашу жизнь
    Серебряная пуля от одиночества и отвлекающих факторов во время обучения программированию Независимо от того, работаете ли вы или учитесь удаленно, велика вероятность, что одиночество и..