2009-12-23 48 views
6

Tôi biết câu hỏi này đã được hỏi như một triệu lần vào lúc này, nhưng tôi thực sự không thể tìm ra giải pháp cập nhật tốt.Sao chép/Dán trong JavaScript?

Tôi đã triển khai thực đơn của riêng mình để cung cấp cho người dùng khả năng Cắt, Sao chép và Dán vào WebApp của tôi. Nhưng tôi không chắc chắn làm thế nào để thực sự làm việc với clipboard trên Firefox, IE, Safari/Chrome.

Cảm ơn sự giúp đỡ của bạn.

Trả lời

1

đã làm u thử: http://ericphan.info/development/cross-browser-copy-and-paste-with-jquery-copy/

UPDATE: liên kết là không có sẵn vì vậy tôi sao chép nội dung từ bộ nhớ cache:

Các Kịch bản

Tôi đã làm việc trên một dự án khách hàng cho SSW khi khách hàng đã báo cáo lỗi trong ứng dụng web.

Lỗi liên quan đến liên kết mailto được tạo động được cập nhật khi bạn chọn nhiều nhân viên. Khách hàng đã báo cáo lỗi khi anh ta chọn hơn 10 nhân viên để gửi email. Lotus Notes mình mail của khách hàng hiện lên một lỗi nói:

Lỗi đối số dòng lệnh xử lý

kiểm tra bản thân mình này, tôi phát hiện ra rằng Outlook 2007 có thể dễ dàng hỗ trợ các email của 30-40 nhân viên trước khi liên kết mailto ngừng làm việc. Nguyên nhân

Nó chỉ ra rằng đặc tả mailto có giới hạn và ứng dụng thư khách cũng có giới hạn. Lotus Notes chỉ xử lý 240 ký tự trong liên kết mailto và các ứng dụng thư hiện đại khác như Outlook 2007 hỗ trợ 2083 ký tự - độ dài tối đa của URL

Điều này giải thích sự khác biệt trong thử nghiệm. Khắc phục - JQuery để giải cứu

Vì đây là giới hạn của thông số HTML, chúng tôi cần một giải pháp khác để đáp ứng yêu cầu của khách hàng về "Tôi muốn có thể chọn nhiều nhân viên và gửi email cho tất cả họ"

Chúng tôi có thể đã tạo biểu mẫu email sử dụng SMTP để gửi email - nhưng khách hàng muốn sử dụng Lotus Notes làm ứng dụng thư khách của mình.

Chúng tôi đã kết thúc việc thay đổi nút "email" để sao chép tất cả các email (được phân cách bằng dấu phẩy) vào khay nhớ tạm và mở ra một cửa sổ email mới. Tất cả khách hàng phải làm là nhấn CTRL + V và dán email vào trường TO. Đây là giải pháp hiệu quả và nhanh nhất giúp khách hàng linh hoạt khi sử dụng ứng dụng email của chính họ.

Có một plugin JQuery được gọi là jquery.copy cung cấp sao chép và dán trình duyệt chéo bằng cách sử dụng tệp flash (swf). Điều này tương tự như cách trình đánh dấu cú pháp trên blog của tôi hoạt động.

Khi bạn tham khảo file jquery.copy.js tất cả các bạn cần phải làm gì để đẩy dữ liệu vào clipboard được điều hành như sau:

$.copy("some text to copy"); 

đẹp và dễ dàng;)

Lưu ý: bạn có thể cần thay đổi đường dẫn tệp SWF trong jquery.copy.js để có được điều này để làm việc

+2

Và, từ bài đăng trên blog đó, bảng quảng cáo zeroclipboard có vẻ tốt - http://code.google.com/p/zeroclipboard/ –

+0

và cảm ơn về nhận xét của bạn :) –

+0

Dường như nó bao gồm bản sao vào khay nhớ tạm nhưng tôi thực sự cần chức năng dán từ khay nhớ tạm ... – thedp

7

Tôi vừa viết chi tiết kỹ thuật blog post về chủ đề này (Tôi làm việc cho Lucidchart và gần đây chúng tôi đã thực hiện đại tu trên khay nhớ tạm của chúng tôi). Bao gồm trong bài viết là this fiddle là một ví dụ làm việc về sao chép và dán qua Javascript.

Tin tốt là ví dụ này cung cấp cho bạn mã làm việc để thiết lập/nhận bất kỳ loại dữ liệu bảng tạm nào được hỗ trợ bất cứ khi nào người dùng sử dụng phím nóng clipboard.

Tin xấu là sử dụng menu ngữ cảnh của riêng bạn để sao chép và dán có vấn đề. Ngay cả Google cũng không thể giải quyết vấn đề này (hãy thử sử dụng bản sao menu ngữ cảnh hoặc dán trong Google Documents trong Firefox). Bạn sẽ có thể làm cho nó hoạt động mà không gặp quá nhiều rắc rối trong IE. Điều này là do bạn có thể truy cập vào đối tượng clipboardData bất cứ lúc nào từ Javascript qua:

window.clipboardData 

(Khi bạn cố gắng làm điều này bên ngoài của một vết cắt hệ thống, sao chép hoặc dán sự kiện, tuy nhiên, IE sẽ nhắc nhở người dùng cấp cho phép ứng dụng web clipboard.)

Trong Chrome, bạn có thể tạo tiện ích mở rộng chrome sẽ cung cấp cho ứng dụng web của bạn clipboard permissions (đây là những gì chúng tôi làm cho Lucidchart). Sau đó, cho người dùng với phần mở rộng của bạn được cài đặt bạn sẽ chỉ cần bắn các sự kiện hệ thống chính mình khi họ nhấp vào tùy chọn menu:

document.execCommand('copy'); 

Dường như Firefox có some options cho phép người dùng cấp quyền truy cập vào các trang web nhất định để truy cập clipboard, nhưng tôi đã không thử bất kỳ cá nhân nào trong số này.

Các vấn đề liên quan