2010-10-14 46 views
15

Tôi đang viết tiện ích mở rộng của Chrome cần thay đổi ứng dụng web phổ biến khi được tải. Rất tiếc, hầu hết giao diện người dùng của ứng dụng web đó được hiển thị bên trong khung nội tuyến và mặc dù địa chỉ của iframe đó khớp với tuyên bố kết hợp content_scripts của tôi, tập lệnh người dùng chỉ được gọi cho khung trên cùng.Truy cập iframe từ tiện ích mở rộng nội dung tập lệnh Chrome

Hỏi: Có phương pháp truy cập HTML được hiển thị bên trong khung nội tuyến từ tiện ích tập lệnh nội dung Chrome không? Nếu có, tôi nên chỉ định các quyền nào và các tùy chọn kê khai khác? Cảm ơn.

+1

Điều này có liên quan đến bạn không? http://code.google.com/p/chromium/issues/detail?id=37920 – bzlm

+1

Không, không phải vậy. Khung nội tuyến không được tiện ích mở rộng tiêm, nhưng bởi ứng dụng web gốc. – dpq

Trả lời

38

Tôi đã giải quyết được sự cố. Tùy chọn sau phải được chỉ định trong phần content_scripts của tệp manifest.json: "all_frames": true. Không có nó, kịch bản chỉ được áp dụng cho khung trên cùng.

// Đôi khi chỉ cần RTFM cẩn thận.

+5

RTFM bạn lưu F ngày của tôi –

8

Thậm chí "all_frames": true dường như không giúp ích gì trong trường hợp iframe không có @src. Điều này được thảo luận trong lỗi http://code.google.com/p/chromium/issues/detail?id=20773, cũng bao gồm một số cách giải quyết, bao gồm việc nhận được contentDocument của phần tử iframe trong trang nguồn, ví dụ: $('a', $($("#canvas_frame")[0].contentDocument)).

Lỗi này không chính xác là vấn đề bạn gặp phải (bạn muốn tải tập lệnh nội dung bên trong khung nội tuyến, không tương tác giữa khung nội tuyến và khung bên ngoài) nhưng tôi nghĩ rằng hầu hết những người có một trong các vấn đề sẽ có một cái khác nữa.

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