От новичка до гуру: Курсы программирования на 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
    Новые материалы

    Веб-приложение для чата с использованием Phoenix и Vue.js - Часть 6
    В этой части мы рассмотрим перенос вещей в отдельные компоненты. Вот все части этой серии: Github: https://github.com/jespr/vue-phoenix-chat Heroku:..

    Почему веб-сборка меняет правила игры? (Часть 1)
    Эта статья написана, чтобы помочь новичкам понять основные концепции: с чего начать? Что для вас есть и какие реальные проблемы вы можете решить? Я уже некоторое время слышу термин..

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

    Функциональное тестирование в JavaScript для начинающих
    Функциональное тестирование является неотъемлемой частью процесса разработки программного обеспечения и особенно важно при работе с JavaScript. JavaScript — это универсальный и широко используемый..

    Если вы используете CodeMirror, вам обязательно нужно это проверить
    Представляем радужные скобки🌈 CodeMirror — невероятно мощный редактор кода в браузере. Хотя его API сложен, он дает разработчикам массу возможностей для создания IDE в браузере на любом..

    Пришло время попрощаться с этими устаревшими библиотеками Python
    Поскольку Python продолжает развиваться, некоторые библиотеки, которые когда-то широко использовались, устаревают. Эти устаревшие библиотеки могут вызывать проблемы совместимости, уязвимости в..

    Привет, Зак Аргайл, сначала позвольте мне поблагодарить за эту статью, но я не думаю, что все ваши примеры…
    Привет, Зак Аргайл, сначала позвольте мне поблагодарить за эту статью, но я не думаю, что все ваши примеры компаний, которые придерживаются устаревших кодовых баз, написанных в таких фреймворках,..