Chrome 和 Firefox 中剪贴板 JavaScript 功能的秘密拷贝?

更新

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


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

copy("party in your clipboard!");

文本会被复制到我的剪贴板上。我搜索了所以和谷歌,似乎找不到任何关于这一点。

  • 这些是特定于每个浏览器的吗?
  • 我在哪里可以找到更多的信息 这些 JavaScript 函数?

浏览器版本:

alt text alt text

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

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

这里有2个截图,显示了在 Chrome 控制台中执行拷贝功能,并且禁用了所有的 Chrome 扩展

alt text

alt text

81190 次浏览

我相信这些是预定义的 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);
}

火灾源头还定义了一系列功能:

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

这里你可以看到 Chrome 开发工具的参考复制命令: Https://developers.google.com/web/tools/chrome-devtools/console/utilities#copy

您不应该在真正的 JS 跨浏览器上使用这些命令(只是为了在控制台上进行调试)。