2012-10-31 49 views
21

Chức năng này có gọi lại như: function (mảng của bất kỳ kết quả nào) {...};về chrome.tabs.executeScript (id, chi tiết, gọi lại)

Nhưng tôi không biết kết quả là gì.

Ví dụ: chrome.tabs..executeScript (null, {code: "var x = 10"}, function() {});

cách trả lại "x" cho cuộc gọi lại?

+0

Xem [câu hỏi này trong Google Groups] (https://groups.google.com/a/chromium.org/forum/?fromgroups=#!topic/chromium-extensions/Nco_o24bZ9A). – Stan

Trả lời

31

Kết quả của tập lệnh là biểu thức cuối cùng đang được đánh giá. Vì vậy, trong ví dụ của bạn, bạn có thể sử dụng:

chrome.tabs.executeScript(null, {code:"var x = 10; x"}, 
    function(results){ console.log(results); }); 

này sẽ đăng nhập [10] đến giao diện điều khiển của tiện ích.

kết quả thực sự là một mảng giá trị bởi vì nếu trang có nhiều khung, bạn có thể chỉ định tập lệnh sẽ được chèn vào từng khung và nhận kết quả của tất cả các lần tiêm. Xem đặc điểm kỹ thuật cho executeScript. Nếu bạn không chỉ định allFrames: true, thì kết quả sẽ luôn là một mảng phần tử duy nhất.

+0

Tôi có 'chrome.tabs.executeScript (null, {code:" var x = 10; x "}, hàm (kết quả) {alert (kết quả);});' nhưng không được xác định là cảnh báo. Bạn có bất kỳ đầu mối nào tại sao điều này có thể xảy ra không? – user1032613

+2

@ user1032613 sẽ xảy ra nếu tiện ích mở rộng của bạn không có quyền thực thi tập lệnh trên tab hiện tại. Đảm bảo miền được bao gồm trong cài đặt 'quyền' của' manifest.json' – rsanchez

+1

Cảm ơn bạn! Và tôi vừa nhận ra rằng, những sửa đổi được thực hiện cho manifest.json sẽ chỉ có hiệu lực sau khi tôi cài đặt lại phần mở rộng. – user1032613

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