2013-09-30 18 views
16

Tôi có tùy chọn menu ngữ cảnh và khi được chọn, tôi muốn chèn một số HTML. Tôi đã thử làm điều nàyLàm cách nào để chèn HTML bằng tiện ích mở rộng của chrome?

var div=document.createElement("div"); 
document.body.appendChild(div); 
div.innerText='test123'; 

Nhưng nó không hiệu quả với tôi.

Lưu ý Tôi đang cố tránh sử dụng jQuery.

+7

nội dung kịch bản sự kiện người nghe của bạn chạy trong một trang nền; bạn đang thao tác trang nền đó thay vì mở trang trong tab hoạt động của trình duyệt. Thao tác trang của một tab phải được thực hiện bằng [tập lệnh nội dung] (http://developer.chrome.com/extensions/content_scripts.html). Trang nền có thể sử dụng [thông báo truyền] (http://developer.chrome.com/extensions/messaging.html) để báo hiệu khi tập lệnh nội dung hoạt động. (Ngoài ra, bạn có thể tạo một loại kịch bản nội dung trực tuyến bằng cách sử dụng ['executeScript'] (http://developer.chrome.com/extensions/tabs.html#method-executeScript).) – apsillers

+0

Nó hoạt động cho tôi khi tôi chạy nó trong giao diện điều khiển nhưng không phải trong extenstion. Bạn có thể gửi cho tôi tập tin của bạn để tôi có thể xem qua nó, xem những gì tôi có thể làm sai? – Ziamor

+4

Tôi nghĩ @DesertIvy đã xác nhận rằng tập lệnh của bạn được xây dựng chính xác, không nhất thiết là bạn đang chạy nó ở đúng vị trí trong cấu trúc của tiện ích mở rộng của bạn. – apsillers

Trả lời

24

Here bạn có thể nghiên cứu cách tạo tiện ích mở rộng và tải xuống tệp manifest.json mẫu.

Content Scripts có thể được sử dụng để chạy js/css khớp với một số url nhất định.

manifest.json

{ 
    "name": "Append Test Text", 
    "description": "Add test123 to body", 
    "version": "1.0", 
    "permissions": [ 
    "activeTab" 
    ], 
    "content_scripts": [ 
    { 
     "matches": ["http://*/*"], 
     "js": ["content-script.js"] 
    } 
    ], 
    "browser_action": { 
    "default_title": "Append Test Text" 
    }, 
    "manifest_version": 2 
} 

nội dung script.js

var div=document.createElement("div"); 
document.body.appendChild(div); 
div.innerText="test123"; 

trên sẽ thực hiện content-script.js cho tất cả các url phù hợp với http://*/* nơi * là một ký tự đại diện. về cơ bản tất cả đều là http trang.

Tập lệnh nội dung có nhiều thuộc tính có thể tìm thấy trong liên kết ở trên.

Programmatic injection có thể được sử dụng khi không được chèn js/css vào mọi trang phù hợp với mẫu.

Dưới đây cho thấy làm thế nào để thực hiện js onclick của biểu tượng mở rộng: -

manifest.json

{ 
    "name": "Append Test Text", 
    "description": "Add test123 to body", 
    "version": "1.0", 
    "permissions": [ 
    "activeTab" 
    ], 
    "background": { 
    "scripts": ["background.js"], 
    "persistent": false 
    }, 
    "browser_action": { 
    "default_title": "Append Test Text" 
    }, 
    "manifest_version": 1 
} 

background.js

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.tabs.executeScript({ 
    code: 'var div=document.createElement("div"); document.body.appendChild(div); div.innerText="test123";' 
    }); 
}); 

này sử dụng executeScript phương pháp, cũng có tùy chọn gọi một tiếng tập tin arate như vậy: -

background.js

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.tabs.executeScript({ 
    file: "insert.js" 
    }); 
}); 

insert.js

var div=document.createElement("div"); 
document.body.appendChild(div); 
div.innerText="test123"; 
Các vấn đề liên quan