คัดลอกลับไปยังฟังก์ชัน JavaScript คลิปบอร์ดใน Chrome และ Firefox?


150

ปรับปรุง

ดูเหมือนว่าเบราว์เซอร์เริ่มสนับสนุนการคัดลอกใน JS


ในหน้าต่างคอนโซลของทั้ง Chrome และ Firefox บน Mac ฉันสามารถดำเนินการได้

copy("party in your clipboard!");

และข้อความจะถูกคัดลอกไปยังคลิปบอร์ดของฉัน ฉันค้นหาดังนั้นและ Google และดูเหมือนจะไม่พบอะไรเลย

  • สิ่งเหล่านี้เฉพาะเจาะจงสำหรับแต่ละเบราว์เซอร์หรือไม่?
  • ฉันจะหาข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชั่น JavaScript เหล่านี้ได้ที่ไหน

เวอร์ชันของเบราว์เซอร์:

ข้อความแสดงแทน ข้อความแสดงแทน

JavaScript ถูกส่งคืนจากคอนโซล Chrome เมื่อเรียกใช้งาน 'คัดลอก'

function (object)
    {
        if (injectedScript._type(object) === "node") {
            var nodeId = InjectedScriptHost.pushNodePathToFrontend(object, false, false);
            InjectedScriptHost.copyNode(nodeId);
        } else
            InjectedScriptHost.copyText(object);
    }
  • รหัสนี้หมายถึงอะไร?

ต่อไปนี้เป็นภาพหน้าจอ 2 ภาพของการเรียกใช้ฟังก์ชันการคัดลอกในคอนโซล Chrome ซึ่งปิดใช้งานส่วนขยายของ Chrome ทั้งหมด

ข้อความแสดงแทน

ข้อความแสดงแทน


คุณกำลังใช้คอนโซล Firefox ชนิดใดคอนโซลข้อผิดพลาด
Matthew Flaschen

2
ฉันไม่ใช่โปรแกรมเมอร์ C ++ แต่ฉันพบvoid InjectedScriptHost::copyText(const String& text)ในopensource.apple.com/source/WebCore/WebCore-7533.18.1/inspector/ ......
Kai

@Kai, Hmmmmmm ... ดูเหมือนว่ามันอาจจะถูกสร้างไว้ใน webkit โอเพนซอร์สของ Apple ใช่ไหม
Mike Grace

น่าเสียดายที่คำสั่งนี้ใช้ไม่ได้กับส่วนขยายของ Chrome ดังนั้นจึงต้องเฉพาะกับคอนโซลเครื่องมือของนักพัฒนาซอฟต์แวร์ใน WebKit
atomicules

ยืนยันว่ายังใช้งานได้กับ Safari ยินดีที่ได้พบ!
bizi

คำตอบ:


62

ฉันเชื่อว่านี่เป็นฟังก์ชั่นคอนโซล 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ยังกำหนดรายการฟังก์ชั่น:

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
ดูเหมือนว่าสิ่งนี้จะไม่ทำงานใน Chrome 44 เมื่อใช้คอนโซลการดีบักโหนด-inspector Clipboard is not enabled in hosted mode. Please inspect using chrome://inspect
jcollum

1
ดี ใช้งานได้ใน Chrome เวอร์ชัน 61.0.3163.100 (รุ่นทางการ) (64 บิต)!
Shanimal

1
ในเครื่องมือนักพัฒนาซอฟต์แวร์ Chrome ของฉันดูเหมือนว่ามันใช้งานได้และยังใช้งานได้window.copy('content')(บน Firefox เท่านั้นที่มีcopy('content')ผลงาน)
morhook

1

ที่นี่คุณสามารถดูคำสั่งคัดลอกอ้างอิงของเครื่องมือ Chrome Dev: https://developers.google.com/web/tools/chrome-devtools/console/utilities#copy

คุณไม่ควรใช้คำสั่งนี้กับเบราว์เซอร์ JS ตัวจริง (สำหรับการดีบั๊กบนคอนโซลที่พูดได้)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.