【问题标题】:Secret copy to clipboard JavaScript function in Chrome and Firefox?Chrome和Firefox中的秘密复制到剪贴板JavaScript功能?
【发布时间】: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。很好的发现!

标签: javascript firefox google-chrome copy clipboard


【解决方案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 跨浏览器上使用这个命令(只是为了在控制台上调试)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-31
    • 2015-06-23
    • 2012-02-03
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多