首页 文章

在Chrome和Firefox中秘密复制到剪贴板JavaScript功能?

提问于
浏览
136

Update

看起来像browsers are starting to support copy natively in JS


在Mac上的Chrome和Firefox的控制台窗口中,我可以执行

copy("party in your clipboard!");

并将文本复制到我的剪贴板 . 我搜索过SO和Google,似乎无法找到任何相关信息 .

  • 这些是针对每个浏览器的吗?

  • 在哪里可以找到有关这些JavaScript函数的更多信息?

浏览器版本:

alt text

alt text

执行“复制”时从Chrome控制台返回的JavaScript

function (object)
    {
        if (injectedScript._type(object) === "node") {
            var nodeId = InjectedScriptHost.pushNodePathToFrontend(object, false, false);
            InjectedScriptHost.copyNode(nodeId);
        } else
            InjectedScriptHost.copyText(object);
    }
  • 这段代码是什么意思?

以下是在Chrome控制台中执行复制功能的2个屏幕截图,其中禁用了所有Chrome扩展程序

alt text

alt text

2 回答

  • 57

    我相信这些是预定义的Firebug控制台功能 - 至少对于Firebug而言似乎就是这种情况 . 例如,如果您尝试调用 window.copy ,则'll get a warning about function not defined, so it'绝对不是浏览器功能,并且不能在普通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 source也定义了一系列功能:

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

    在这里,您可以看到Chrome Dev工具的参考副本命令:https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference#copyobject

    您不应该在真正的JS跨浏览器上使用此命令(仅用于在控制台上进行调试) .

相关问题