Sao chép bí mật vào chức năng clipboard của clipboard trong Chrome và Firefox?


150

Cập nhật

Có vẻ như các trình duyệt đang bắt đầu hỗ trợ sao chép tự nhiên trong JS


Trong các cửa sổ điều khiển của cả Chrome và Firefox trên Mac, tôi có thể thực thi

copy("party in your clipboard!");

và văn bản được sao chép vào clipboard của tôi. Tôi đã tìm kiếm SO và Google và dường như không thể tìm thấy bất cứ điều gì về điều này.

  • Đây có phải là cụ thể cho từng trình duyệt?
  • Tôi có thể tìm thêm thông tin về các hàm JavaScript này ở đâu?

Phiên bản trình duyệt:

văn bản thay thế văn bản thay thế

JavaScript được trả về từ bảng điều khiển Chrome khi thực hiện 'bản sao'

function (object)
    {
        if (injectedScript._type(object) === "node") {
            var nodeId = InjectedScriptHost.pushNodePathToFrontend(object, false, false);
            InjectedScriptHost.copyNode(nodeId);
        } else
            InjectedScriptHost.copyText(object);
    }
  • Mã này có nghĩa là gì?

Dưới đây là 2 ảnh chụp màn hình thực hiện chức năng sao chép trong bảng điều khiển Chrome với tất cả các tiện ích mở rộng chrome bị tắt

văn bản thay thế

văn bản thay thế


Bạn đang sử dụng bảng điều khiển Firefox nào, Bảng điều khiển Lỗi?
Matthew Flaschen

2
Tôi không phải là lập trình viên C ++, nhưng tôi đã tìm thấy void InjectedScriptHost::copyText(const String& text)trong opensource.apple.com/source/WebCore/WebCore-7533.18.1/inspector/ Kẻ
Kai

@Kai, Hmmmmmm ... có vẻ như nó được tích hợp sẵn trong webkit mã nguồn mở của Apple rồi phải không?
Mike Grace

Thật không may, lệnh này không hoạt động từ tiện ích mở rộng của Chrome, vì vậy nó phải dành riêng cho bảng điều khiển công cụ dành cho nhà phát triển trong WebKit.
nguyên tử

xác nhận điều này cũng hoạt động với Safari. Đẹp tìm thấy!
bizi

Câu trả lời:


62

Tôi tin rằng đây là các chức năng bảng điều khiển Firebird được xác định trước - ít nhất đó có vẻ là trường hợp của Fireorms. Nếu bạn thử gọi window.copyví dụ, bạn sẽ nhận được cảnh báo về chức năng không được xác định, do đó chắc chắn đó không phải là chức năng trình duyệt và không thể được sử dụng trong các tệp JavaScript thông thường. Các chức năng sau đây dường như cũng hoạt động trong bảng điều khiển JavaScript, sau khi chơi xung quanh nó một chút:

  • clear()
  • profile()

Chạy chúng trong bảng điều khiển Chrome cho thấy nguồn đằng sau các chức năng này trong bảng điều khiển 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);
}

Trong khi nguồn Firebird cũng xác định danh sách các hàm:

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
Có vẻ như điều này không hoạt động trong Chrome 44 khi sử dụng bảng điều khiển gỡ lỗi nút kiểm tra nút. Clipboard is not enabled in hosted mode. Please inspect using chrome://inspect
jcollum

1
Đẹp. Điều này hoạt động trong Chrome Phiên bản 61.0.3163.100 (Bản dựng chính thức) (64-bit)!
Tối thiểu

1
Trên công cụ dành cho nhà phát triển Chrome của tôi có vẻ như nó hoạt động và cũng hoạt động window.copy('content')(chỉ trên Firefox với copy('content')các tác phẩm)
morhook 11/07/18

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.