web-dev-qa-db-fra.com

Copie secrète dans le presse-papier JavaScript dans Chrome et Firefox?

Mettre à jour

On dirait que les navigateurs commencent à supporter la copie de manière native dans JS


Dans les fenêtres de la console de Chrome et de Firefox sur Mac, je peux exécuter

copy("party in your clipboard!");

et le texte est copié dans mon presse-papiers. J'ai consulté SO et Google et je ne trouve rien à ce sujet. 

  • Sont-ils spécifiques à chaque navigateur?
  • Où puis-je trouver plus d'informations sur Ces fonctions JavaScript?

Versions du navigateur:

alt textalt text

JavaScript est retourné de la console Chrome lors de l'exécution de "copie"

function (object)
    {
        if (injectedScript._type(object) === "node") {
            var nodeId = InjectedScriptHost.pushNodePathToFrontend(object, false, false);
            InjectedScriptHost.copyNode(nodeId);
        } else
            InjectedScriptHost.copyText(object);
    }
  • Que veut dire ce code?

Voici 2 captures d'écran de l'exécution de la fonction de copie dans la console Chrome avec toutes les extensions chrome désactivées

alt text

alt text

135
Mike Grace

Je pense que ce sont des fonctions de console Firebug prédéfinies - du moins cela semble être le cas pour Firebug. Si vous essayez par exemple d'appeler window.copy, vous recevrez un avertissement concernant une fonction non définie. Il ne s'agit donc en aucun cas d'une fonction de navigateur et ne peut pas être utilisé dans des fichiers JavaScript normaux. Les fonctions suivantes semblent également fonctionner dans la console JavaScript, après avoir joué un peu avec elle:

  • clear()
  • profile()

Leur exécution dans la console Chrome indique la source derrière ces fonctions dans la console 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);
}

Alors que source Firebug définit également une liste de fonctions:

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...
58
Yi Jiang

Vous pouvez voir ici la commande de copie de référence des outils de développement Chrome: https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference#copyobject

Vous ne devez pas utiliser ces commandes sur de vrais navigateurs multi-navigateurs JS (uniquement pour le débogage sur la console pour ainsi dire).

0
morhook