JavaScript có thể ghi vào đĩa không?

Internet Explorer cho phép bạn ghi vào hệ thống tệp Windows bằng hàm vô hại

8[]. Nó không dựa vào công nghệ ActiveX có khả năng không an toàn và thường bị tê liệt cần thiết để đọc tệp hoặc bất kỳ thứ gì cục bộ. Sẽ không có gì được lưu nếu không có sự đồng ý trước rõ ràng, hộp thoại cho phép chọn thư mục yêu cầu người dùng nhấp hoặc nhập 'OK' mỗi lần và thậm chí còn có thêm yêu cầu xác nhận nếu tên tệp đã tồn tại. Bởi vì, nếu điều đó được xác nhận, tập tin sẽ bị ghi đè

Một mẫu ví dụ trực tiếp

Nhập văn bản sẽ được lưu và tùy chọn một tên. Sau đó nhấp vào nút 'Lưu' để lưu văn bản vào tệp cục bộ trên hệ thống của bạn. Sử dụng chức năng 'Unnull' nếu bạn có văn bản được mã hóa utf-16 với các byte rỗng cần dọn dẹp

Loại tập tin

Hai loại tệp văn bản có sẵn để lưu vào.

9 đối với văn bản thuần túy và 
0 đối với tài liệu văn bản có định dạng, nghĩa là. chứa một số đánh dấu. Cửa sổ hộp thoại "SaveAs" có thể truy cập bằng chức năng 
8[] xuất phát từ một dll hệ thống tiêu chuẩn và không giống hộp thoại mà trình duyệt sử dụng khi được chọn từ menu. Chỉ cái sau bao gồm tùy chọn tệp đơn 
2 nổi tiếng

Các tệp được lưu dưới dạng

0 sẽ được gói trong các thẻ. Đầu sẽ như thế này




Chân trang như thế này

Không thể thay đổi loại tài liệu hoặc lưu bất kỳ thứ gì khác trong phần đầu tài liệu. Các thẻ sẽ được viết hoa và chuẩn hóa khoảng trắng. Tên tệp có thể kết thúc bằng

0 tùy thuộc vào tùy chọn được đặt trong

Rõ ràng là quyền kiểm soát rất hạn chế và việc sử dụng nâng cao hơn, chẳng hạn như tên tệp kết thúc bằng

1, bị loại trừ. Việc ghi vào hệ thống tệp cục bộ với quyền lực tuyệt đối yêu cầu một 
2 và 
3

Kịch bản

Kịch bản được gọi khi gửi biểu mẫu

Chỉ có thể lưu toàn bộ tài liệu bằng phương pháp này, vì vậy văn bản phải được sao chép vào một cửa sổ hoặc khung riêng biệt hoặc một số đối tượng như vậy; . Tập lệnh tạo iframe nếu nó chưa tồn tại hoặc mở một cửa sổ bật lên nhỏ nếu không thể tạo được, viết văn bản vào đó, sau đó gọi hàm

8[] làm phương thức của tài liệu mới được tạo đó

Phương thức

8[] nhận ba đối số. Đầu tiên là mã định danh lệnh, một chuỗi chỉ định lệnh sẽ thực thi. Tham số thứ hai là một boolean cho biết hộp thoại có được hiển thị hay không. Với 
7 là lệnh, luôn hiển thị hộp thoại, đây là tùy chọn trái với tài liệu trên trang web của nhà sản xuất. Đường dẫn bắt buộc và tên của tệp cần tạo được chuyển vào tham số thứ ba, với ký tự dấu gạch chéo ngược 
8 làm dấu phân cách

Nếu người dùng tại một thời điểm nào đó đã hủy hộp thoại Lưu, phương thức này sẽ trả về

9. Nếu vị trí đã chỉ định được đánh dấu là chỉ đọc hoặc vì một số lý do kỹ thuật, lệnh không được thực thi, không có gì được lưu và tệp chưa được ghi, thì cùng một 
9 sẽ được trả về. Không thể xác định trong tập lệnh cái nào trong số hai cái được trả về, ngoại trừ bằng cách hỏi. Nếu, nhờ ơn Chúa, tệp được lưu, phương thức này sẽ trả về một kết quả chắc chắn là 
11

1

Cuộc gọi cuối cùng tới

12[] ảnh hưởng đến cửa sổ bật lên, nhưng không ảnh hưởng đến iframe

byte rỗng

Mã mẫu với null-byte

Các byte 'không' xuất hiện giống như khoảng trắng thừa giữa các ký tự sử dụng mã hóa Unicode UTF-16 mặc định, có thể bị loại bỏ bằng cách mở tệp dưới dạng

13 thay vì 
14, bất kể phần mở rộng là gì và buộc ký tự được đặt thành UTF-8 như được hiển thị 

Nếu bạn tình cờ có một số trong khay nhớ tạm của mình, một biểu thức chính quy nhanh để xóa khoảng trắng thừa này sẽ xuất hiện sau

  1. chuỗi mới = chuỗi cũ. thay thế[ /[\s[. ]]/g, '$2' ];

Điều ngược lại, thêm khoảng trắng trước mỗi ký tự, đạt được với biểu thức chính quy này

  1. chuỗi mới = chuỗi cũ. thay thế[ /[. ]/g, ' $1' ];

Chức năng đằng sau nút 'Unnull' trong biểu mẫu trên trang này được xây dựng trên chủ đề này

6

Một số ký tự đầu tiên trong văn bản đã trải qua quá trình dịch từ UTF-16 sang UTF-8, luôn giống nhau. Hàm tận dụng thực tế này bằng cách kiểm tra sự hiện diện của chúng bằng biểu thức chính quy

15 trước khi thực hiện chuyển đổi

Chủ Đề