Trong tệp manifest.json, tôi tuyên bố rằng tôi muốn tiêm một số kịch bản, như thế này:Trong tiện ích của Chrome, tập lệnh nội dung không thể ảnh hưởng bên trong iframe?
{
"name": "my extension",
"version": "1.0",
"background_page": "background.html",
"permissions": ["contextMenus", "tabs", "http://*.example.com/*"],
"content_scripts": [
{
"matches":
[
"http://*.taobao.com/*",
"http://*.yintai.com/*"
],
"run_at": "document_idle",
"js": ["jquery-1.5.1.min.js","jquery-ui-1.8.13.custom.min.js", "contentscript.js"],
"all_frames": true
}
]
}
Trong kịch bản nội dung, tôi tạo ra một khung nội tuyến, trong số những thứ khác. Nó hoạt động tốt cho đến nay. Như thế này:
$('<div id="my_notifier"></div>').appendTo($('body')).html('<iframe src="http://example.com"></iframe>');
Vấn đề ở bên trong khung nội tuyến, nó không kế thừa bất kỳ thứ gì từ tập lệnh nội dung. Nếu tôi muốn sử dụng jQuery, tôi phải sử dụng <script src=...
để đưa nó trở lại bên trong khung nội tuyến.
Tôi không muốn bao gồm jQuery một lần nữa vì tôi đã đặt nó trong phần mở rộng. Tôi không muốn người dùng tải về jQuery một lần nữa và một lần nữa trên mỗi trang mà phần mở rộng cần phải chạy trên.
Tôi đã thử thuộc tính "all_frames": true
nhưng không hoạt động.
Vui lòng thông báo. Cảm ơn.
Edit: Tôi thêm example.com vào thuộc tính matches
như thế này:
"content_scripts": [
{
"matches":
[
"http://*.taobao.com/*",
"http://*.yintai.com/*",
"http://*.example.com/*"
],
"run_at": "document_idle",
"js": ["jquery-1.5.1.min.js","jquery-ui-1.8.13.custom.min.js", "contentscript.js"],
"all_frames": true
}
]
Nhưng nó không hoạt động.
Để được rõ ràng hơn, nói nội dung của khung nội tuyến (example.com) là:
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
</head>
<body>
<div></div>
<script type="text/javascript">
$('div').html('hi');
</script>
</body>
</html>
Sẽ có một lỗi: $ không được định nghĩa
Để làm cho nó làm việc, tôi phải sử dụng:
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
</head>
<body>
<div></div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
$('div').html('hi');
</script>
</body>
</html>
Bạn có thể hiển thị tệp kê khai đầy đủ của mình với bộ 'all_frames' và mã tập lệnh nội dung tạo khung nội tuyến không? – serg
Ok, tôi đã chỉnh sửa câu hỏi. – Betty
Hey Betty, bây giờ Serg đã giải quyết được vấn đề ban đầu, hãy xem câu hỏi này đang đợi cho đến khi khung đã được tải để truy cập nó: http: // stackoverflow.com/questions/4669089/how-to-inject-an-iframe-panel-to-a-google-chrome-mở rộng-và-thêm-nhấp-sự kiện-in – Darin