Chrome和Firefox中的秘密复制到剪贴板JavaScript功能?
Posted
技术标签:
【中文标题】Chrome和Firefox中的秘密复制到剪贴板JavaScript功能?【英文标题】:Secret copy to clipboard JavaScript function in Chrome and Firefox? 【发布时间】:2011-06-01 08:17:06 【问题描述】:更新
看起来像browsers are starting to support copy natively in JS
在 Mac 上 Chrome 和 Firefox 的控制台窗口中我都可以执行
copy("party in your clipboard!");
文本被复制到我的剪贴板。我搜索了 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);
这段代码是什么意思?
这是在禁用所有 chrome 扩展的情况下在 Chrome 控制台中执行复制功能的 2 个屏幕截图
【问题讨论】:
你使用的是哪个 Firefox 控制台,错误控制台? 我不是 C++ 程序员,但我在 opensource.apple.com/source/WebCore/WebCore-7533.18.1/inspector/… 中找到了void InjectedScriptHost::copyText(const String& text)
@Kai,Hmmmmmm... 看起来它可能是内置在 Apple 的开源 webkit 中的?
很遗憾,此命令不适用于 Chrome 扩展程序,因此它必须特定于 WebKit 中的开发人员工具控制台。
确认这也适用于 Safari。很好的发现!
【参考方案1】:
我相信这些是预定义的 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);
虽然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...
【讨论】:
在使用 node-inspector 调试控制台时,这似乎在 Chrome 44 中不起作用。Clipboard is not enabled in hosted mode. Please inspect using chrome://inspect
不错。这适用于 Chrome 版本 61.0.3163.100(官方构建)(64 位)!
在我的 Chrome 开发者工具上,它看起来可以正常工作,window.copy('content')
也可以工作(仅在 Firefox 上,copy('content')
可以工作)【参考方案2】:
这里可以看到Chrome Dev tools的参考copy命令: https://developers.google.com/web/tools/chrome-devtools/console/utilities#copy
你不应该在真正的 JS 跨浏览器上使用这个命令(只是为了在控制台上调试)。
【讨论】:
以上是关于Chrome和Firefox中的秘密复制到剪贴板JavaScript功能?的主要内容,如果未能解决你的问题,请参考以下文章