Friday, May 4, 2012

Secret copy to clipboard JavaScript function in Chrome and Firefox?


In the console windows of both Chrome and Firefox on Mac I can execute




copy("party in your clipboard!");



and the text gets copied to my clipboard. I have searched SO and Google and can't seem to find anything on this.



  • Are these specific to each browser?

  • Where can I find more information on these JavaScript functions?



Browser versions:



alt text alt text



JavaScript returned from Chrome console when executing 'copy'




function (object)
{
if (injectedScript._type(object) === "node") {
var nodeId = InjectedScriptHost.pushNodePathToFrontend(object, false, false);
InjectedScriptHost.copyNode(nodeId);
} else
InjectedScriptHost.copyText(object);
}



  • What does this code mean?



Here are 2 screenshots of executing copy function in Chrome console with all chrome extensions disabled



alt text



alt text


Source: Tips4all

1 comment:

  1. I believe these are predefined Firebug console functions - at least that seems to be the case for Firebug. If you try calling window.copy for instance, you'll get a warning about function not defined, so it's definitely not a browser function, and cannot be used in normal JavaScript files. The following functions also seems to work in the JavaScript console, after playing around with it a bit:


    clear()
    profile()




    Running these in the Chrome console reveals the source behind these functions in the Webkit console:

    > 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);
    }


    While the Firebug source also defines a list of functions:

    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...

    ReplyDelete