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

Mike Grace
sumber
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...
Yi Jiang
sumber
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