Tôi tự hỏi liệu có thể chạy sandbox JavaScript trong trình duyệt để ngăn truy cập vào các tính năng thường có sẵn cho mã JavaScript đang chạy trong trang HTML hay không.
Ví dụ: giả sử tôi muốn cung cấp API JavaScript cho người dùng cuối để cho phép họ xác định trình xử lý sự kiện sẽ chạy khi "sự kiện thú vị" xảy ra, nhưng tôi không muốn những người dùng đó truy cập vào các thuộc tính và chức năng của window
đối tượng. Tôi có thể làm điều này?
Trong trường hợp đơn giản nhất, giả sử tôi muốn ngăn người dùng gọi alert
. Một vài cách tiếp cận tôi có thể nghĩ ra là:
- Xác định lại
window.alert
toàn cầu. Tôi không nghĩ rằng đây sẽ là một cách tiếp cận hợp lệ vì các mã khác đang chạy trong trang (tức là những thứ không được người dùng ủy quyền trong trình xử lý sự kiện của họ) có thể muốn sử dụngalert
. - Gửi mã xử lý sự kiện đến máy chủ để xử lý. Tôi không chắc chắn rằng việc gửi mã đến máy chủ để xử lý là cách tiếp cận phù hợp vì trình xử lý sự kiện cần phải chạy trong ngữ cảnh của trang.
Có lẽ một giải pháp trong đó máy chủ xử lý chức năng do người dùng xác định và sau đó tạo ra một cuộc gọi lại để được thực thi trên máy khách sẽ hoạt động? Ngay cả khi phương pháp đó hoạt động có cách nào tốt hơn để giải quyết vấn đề này?
while (1) {}
--- nó chỉ bị treo. Tương tự như vậya=[]; while (1) { a=[a,a]; }
.