Salinan rahasia ke fungsi JavaScript clipboard di Chrome dan Firefox?


150

Memperbarui

Sepertinya browser mulai mendukung penyalinan secara asli di JS


Di jendela konsol Chrome dan Firefox di Mac saya dapat menjalankan

copy("party in your clipboard!");

dan teks akan disalin ke clipboard saya. Saya telah mencari SO dan Google dan sepertinya tidak dapat menemukan apa pun di sini.

  • Apakah ini khusus untuk setiap browser?
  • Di mana saya dapat menemukan informasi lebih lanjut tentang fungsi-fungsi JavaScript ini?

Versi peramban:

teks alternatif teks alternatif

JavaScript dikembalikan dari konsol Chrome saat menjalankan 'copy'

function (object)
    {
        if (injectedScript._type(object) === "node") {
            var nodeId = InjectedScriptHost.pushNodePathToFrontend(object, false, false);
            InjectedScriptHost.copyNode(nodeId);
        } else
            InjectedScriptHost.copyText(object);
    }
  • Apa arti kode ini?

Berikut adalah 2 tangkapan layar dari menjalankan fungsi salin di konsol Chrome dengan semua ekstensi chrome dinonaktifkan

teks alternatif

teks alternatif


Konsol Firefox mana yang Anda gunakan, Konsol Kesalahan?
Matthew Flaschen

2
Saya bukan programmer C ++, tetapi saya temukan void InjectedScriptHost::copyText(const String& text)di opensource.apple.com/source/WebCore/WebCore-7533.18.1/inspector/…
Kai

@ Kai, Hmmmmmm ... sepertinya itu dibuat untuk webkit open source Apple?
Mike Grace

Sayangnya, perintah ini tidak berfungsi dari ekstensi Chrome, jadi itu harus spesifik untuk konsol alat pengembang di WebKit.
atomicules

konfirmasi ini juga berfungsi dengan Safari. Temuan yang bagus!
bizi

Jawaban:


62

Saya percaya ini adalah fungsi-fungsi konsol Firebug yang telah ditentukan sebelumnya - setidaknya itulah yang menjadi alasan Firebug. Jika Anda mencoba memanggil window.copymisalnya, Anda akan mendapatkan peringatan tentang fungsi yang tidak didefinisikan, jadi itu jelas bukan fungsi browser, dan tidak dapat digunakan dalam file JavaScript normal. Fungsi-fungsi berikut juga tampaknya berfungsi di konsol JavaScript, setelah bermain-main dengannya:

  • clear()
  • profile()

Menjalankan ini di konsol Chrome mengungkapkan sumber di balik fungsi-fungsi ini di konsol 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);
}

Sementara sumber Firebug juga mendefinisikan daftar fungsi:

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

2
Tampaknya ini tidak berfungsi di Chrome 44 saat menggunakan konsol debugging node-inspector. Clipboard is not enabled in hosted mode. Please inspect using chrome://inspect
jcollum

1
Bagus. Ini berfungsi di Versi Chrome 61.0.3163.100 (Bangun Resmi) (64-bit)!
Shanimal

1
Pada alat pengembang Chrome saya sepertinya berfungsi dan juga berfungsi window.copy('content')(pada Firefox hanya dengan copy('content')karya)
morhook

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.