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

Mik*_*ace 144 javascript clipboard firefox google-chrome copy

更新

看起来浏览器开始在JS中本地支持复制


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

copy("party in your clipboard!");
Run Code Online (Sandbox Code Playgroud)

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

  • 这些是针对每个浏览器的吗?
  • 在哪里可以找到有关这些JavaScript函数的更多信息?

浏览器版本:

替代文字 替代文字

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

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

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

替代文字

替代文字

Yi *_*ang 59

我相信这些是预定义的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);
}
Run Code Online (Sandbox Code Playgroud)

虽然萤火虫源还定义的函数的列表:

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...
Run Code Online (Sandbox Code Playgroud)

  • 使用节点检查器调试控制台时,这似乎在 Chrome 44 中不起作用。`在托管模式下未启用剪贴板。请使用 chrome://inspect` 检查 (2认同)
  • 在我的 Chrome 开发工具上看起来它正在工作,并且也可以工作 `window.copy('content')` (在 Firefox 上只能使用 `copy('content')` 工作) (2认同)