Có thể tạo tập lệnh nội dung chỉ khi kiểu nội dung của tài liệu khớp với mẫu cụ thể không? Trên thực tế, mục tiêu của tôi đơn giản hơn nhiều: tôi cần tập lệnh nội dung của mình được tiêm vào tài liệu HTML chỉ (hiện tại, nó cũng được đưa vào tài liệu XML). Tập lệnh nội dung phải được tiêm tại "document_start".Làm cách nào để giới hạn tập lệnh nội dung tiện ích của Chrome thành một loại nội dung cụ thể?
Trả lời
Tôi đã gặp phải sự cố tương tự và đã giải quyết vấn đề theo cách sau.
Thay vì giới hạn nhiều tài liệu mà tập lệnh nội dung được tiêm, dựa trên tài liệu 'Content-Type
, tôi quyết định đưa tập lệnh vào tất cả các tài liệu, nhưng chỉ thực thi nó theo đúng cách.
này được thực hiện bằng cách phân tích document.xmlVersion
và document.doctype
tính:
document.doctype
phải khôngnull
trong một tài liệu HTML;document.xmlVersion
không được lànull
trong tài liệu XML;
Vì vậy, rất dễ sử dụng một trong hai cách để phân biệt một loại với loại khác và "ràng buộc" tất cả nội dung tập lệnh cần thiết chỉ khi thích hợp. Đặc biệt, người ta có thể tiêm bộ tải script nhỏ, mà sẽ tải thêm, có thể nặng thứ, có điều kiện.
Chrome không cung cấp bất kỳ phương tiện nào để hạn chế việc chèn tập lệnh theo loại tài liệu.
Cách hiệu quả nhất để thực hiện việc này là qua chrome.webRequest.onHeadersReceived
, cho phép bạn truy vấn và giữ lại thông tin tiêu đề phản hồi (bao gồm Content-Type
). Rất tiếc, API này hiện không có sẵn trong bản phát hành ổn định của Chrome. (Bạn có thể sử dụng API thử nghiệm trong các phiên bản hiện tại của Chrome, nhưng bạn sẽ không thể xuất bản các tiện ích mở rộng sử dụng nó.)
Một giải pháp khả thi cho bạn là xác định liệu tài liệu được tiêm có đang được Chrome xử lý hay không dưới dạng XML. (Và nếu có, hãy ngừng xử lý tài liệu.) Một hack để thực hiện điều này là kiểm tra xem document.getElementById('webkit-xml-viewer-source-xml')
có phải là null
hay không. Phần yếu tố này của trình xem XML của Chrome/webkit.
- 1. Tải tập lệnh nội dung trong tiện ích chrome
- 2. Tập lệnh nội dung tiện ích của Chrome có thể truy cập vào window.opener không?
- 3. Trong tiện ích của Chrome, tập lệnh nội dung không thể ảnh hưởng bên trong iframe?
- 4. Cách chèn CSS bằng tệp tập lệnh nội dung trong tiện ích của Chrome?
- 5. Tiện ích mở rộng của Chrome: Cách xóa tập lệnh nội dung sau khi tiêm?
- 6. cách không kế thừa kiểu trong tập lệnh nội dung tiện ích mở rộng chrome
- 7. Tiện ích mở rộng của Chrome, cách sửa đổi nội dung trang (thêm nội dung nào đó)
- 8. tiện ích chrome: chia sẻ một đối tượng giữa các tập lệnh nội dung và tập lệnh nền
- 9. Truy cập iframe từ tiện ích mở rộng nội dung tập lệnh Chrome
- 10. Tiện ích mở rộng của Chrome: cách phát hiện tập lệnh nội dung đó đã được tải vào một tab?
- 11. Tiện ích mở rộng của Chrome: Quyền để thao tác nội dung của URI dữ liệu
- 12. Tiện ích mở rộng của Chrome - tập lệnh nội dung không phân biệt chữ hoa chữ thường khớp với số
- 13. URL được sử dụng để chèn tập lệnh nội dung vào trang web trong tiện ích mở rộng của Chrome
- 14. Lỗi gửi SendMessage của tiện ích mở rộng của Chrome từ tập lệnh nội dung lên nền html
- 15. loại nội dung theo tiện ích mở rộng
- 16. UIWebView - Giới hạn chiều rộng nội dung
- 17. $ x() không được xác định bên trong tiện ích mở rộng của Chrome, tập lệnh nội dung
- 18. Mã mở rộng của Chrome so với tập lệnh Nội dung và tập lệnh được nhúng
- 19. Chèn lại tập lệnh nội dung tiện ích mở rộng của Chrome sau khi nâng cấp hoặc cài đặt
- 20. Tiện ích mở rộng của Chrome - Tập lệnh nội dung chồng chất nhiều lần từ liên kết/điều hướng AJAX
- 21. Bài tập Portlet cụ thể theo từng loại nội dung
- 22. Tập lệnh nội dung Tiện ích mở rộng của Chrome không truy cập DOM của trang mà nó được tiêm
- 23. Đọc tệp được đóng gói với tiện ích mở rộng của Chrome trong tập lệnh nội dung
- 24. Làm cách nào để chèn tập lệnh nội dung trong tiện ích mở rộng của google chrome khi trang được thay đổi qua history.pushState?
- 25. Phát hiện tin nhắn tới tiện ích bổ sung từ tập lệnh nội dung onbeforeunload?
- 26. Cách nhận tiện ích mở rộng mặc định cho một loại nội dung nhất định?
- 27. Nội dung của $ GIT_DIR có nội dung gì?
- 28. addEventListener trong tập lệnh nội dung không hoạt động
- 29. Làm cách nào để in một nội dung của JPanel?
- 30. Làm cách nào để đọc nội dung của tiêu đề bố cục nội dung?
Điều gì xảy ra nếu tập lệnh nội dung của bạn thêm trình xử lý sự kiện để đợi tài liệu được tải trước khi thực hiện một hành động? Ví dụ, 'document.addEventListener (" DOMContentLoaded ", function() {do.stuff()};'. – cheeken
Đây là những gì tôi nên tránh, kịch bản của tôi phải được thực hiện trước tiên (trước khi tài liệu được tải) – spektom
Tôi hiểu. Trong trường hợp đó, tôi không có đề xuất nào khác. – cheeken