Tajna kopia do schowka Funkcja JavaScript w przeglądarce Chrome i Firefox?

150

Aktualizacja

Wygląda na to, że przeglądarki zaczynają natywnie obsługiwać kopiowanie w JS


W oknach konsoli zarówno Chrome, jak i Firefox na Macu mogę uruchomić

copy("party in your clipboard!");

a tekst zostanie skopiowany do mojego schowka. Przeszukałem SO i Google i nie mogę znaleźć niczego na ten temat.

  • Czy są one specyficzne dla każdej przeglądarki?
  • Gdzie mogę znaleźć więcej informacji na temat tych funkcji JavaScript?

Wersje przeglądarki:

tekst alternatywny tekst alternatywny

JavaScript zwrócony z konsoli Chrome podczas wykonywania „kopiowania”

function (object)
    {
        if (injectedScript._type(object) === "node") {
            var nodeId = InjectedScriptHost.pushNodePathToFrontend(object, false, false);
            InjectedScriptHost.copyNode(nodeId);
        } else
            InjectedScriptHost.copyText(object);
    }
  • Co oznacza ten kod?

Oto 2 zrzuty ekranu z wykonywania funkcji kopiowania w konsoli Chrome z wyłączonymi wszystkimi rozszerzeniami Chrome

tekst alternatywny

tekst alternatywny

Mike Grace
źródło
Z której konsoli Firefox korzystasz, konsoli błędów?
Matthew Flaschen
2
Nie jestem programistą C ++, ale znalazłem void InjectedScriptHost::copyText(const String& text)na opensource.apple.com/source/WebCore/WebCore-7533.18.1/inspector/ ...
Kai
@Kai, Hmmmmmm ... wygląda na to, że może to jest wbudowane w webkit Apple open source?
Mike Grace
Niestety to polecenie nie działa z rozszerzenia Chrome, więc musi być specyficzne dla konsoli narzędzi programistycznych w WebKit.
atomicules
potwierdź, że działa to również z Safari. Niezłe znalezisko!
bizi

Odpowiedzi:

62

Uważam, że są to predefiniowane funkcje konsoli Firebug - przynajmniej wydaje się, że tak jest w przypadku Firebuga. Jeśli window.copyna przykład spróbujesz wywołać , otrzymasz ostrzeżenie o niezdefiniowanej funkcji, więc zdecydowanie nie jest to funkcja przeglądarki i nie można jej używać w zwykłych plikach JavaScript. Następujące funkcje również wydają się działać w konsoli JavaScript, po trochę zabawie z nią:

  • clear()
  • profile()

Uruchomienie ich w konsoli Chrome ujawnia źródło tych funkcji w konsoli 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);
}

Chociaż źródło Firebug definiuje również listę funkcji:

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...
Yi Jiang
źródło
2
Wygląda na to, że to nie działa w Chrome 44 podczas korzystania z konsoli debugowania inspektora węzłów. Clipboard is not enabled in hosted mode. Please inspect using chrome://inspect
jcollum
1
Miły. Działa to w wersji Chrome 61.0.3163.100 (oficjalna kompilacja) (64-bitowa)!
Shanimal,
1
Na moim narzędziu programistycznym Chrome wygląda na to, że działa, a także działa window.copy('content')(w przeglądarce Firefox tylko z copy('content')działa)
morhook