1. ホーム
  2. javascript

[解決済み] ChromeとFirefoxでクリップボードにコピーするJavaScriptの秘密の機能?

2022-04-23 09:15:34

質問

更新情報

見た目は ブラウザはJSでネイティブにコピーをサポートし始めています。


MacのChromeとFirefoxの両方のコンソールウィンドウで、以下を実行することができます。

copy("party in your clipboard!");

と表示され、テキストがクリップボードにコピーされます。SOやGoogleで検索してみましたが、これに関するものは見つからないようです。

  • これは各ブラウザ固有のものですか?
  • の詳細については、どこで確認できますか? これらのJavaScriptの関数について教えてください。

ブラウザのバージョン

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つのスクリーンショットです。

解決方法は?

これらは、あらかじめ定義されたFirebugのコンソール関数であると思います - 少なくともFirebugの場合はそうであると思われます。もし、あなたが window.copy 例えば、function not definedという警告が出るので、ブラウザの関数でないことは確かで、通常の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のソース も関数のリストを定義しています。

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