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


150

Оновлення

Схоже, браузери починають підтримувати копію в JS


У вікнах консолей Chrome і Firefox на Mac я можу виконати

copy("party in your clipboard!");

і текст копіюється в мій буфер обміну. Я шукав SO та Google і, здається, не можу нічого знайти на цьому.

  • Ці специфічні для кожного браузера?
  • Де я можу знайти більше інформації про ці функції JavaScript?

Версії браузера:

alt текст alt текст

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 із вимкненими розширеннями хрому

alt текст

alt текст


Яку консоль Firefox ви використовуєте, консоль помилок?
Метью Флашен

2
Я не програміст на C ++, але я знайшов void InjectedScriptHost::copyText(const String& text)у opensource.apple.com/source/WebCore/WebCore-7533.18.1/inspector/…
Кай

@Kai, Hmmmmmm ... схоже, можливо, він вбудований у відкритий вихідний код Apple тоді?
Майк Грейс

На жаль, ця команда не працює з розширенням Chrome, тому вона повинна бути специфічною для консолі інструментів розробника в WebKit.
atomicules

підтвердити це також працює з Safari. Приємна знахідка!
bizi

Відповіді:


62

Я вважаю, що це заздалегідь визначені функції консолі 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...

2
Здається, що це не працює в Chrome 44 під час використання консолі налагодження інспектора вузлів. Clipboard is not enabled in hosted mode. Please inspect using chrome://inspect
jcollum

1
Приємно. Це працює у версії 61.0.3163.100 Chrome (Офіційна збірка) (64-розрядна)!
Шанімаль

1
На моєму інструменті для розробників Chrome схоже, що він працює, а також працює window.copy('content')(на Firefox лише з copy('content')роботами)
morhook

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.