2013-07-23 31 views
5

Tôi phát triển tiện ích của Chrome.Tiện ích của Chrome trênSuspend không bao giờ được gọi là

Tôi cố gắng thêm trình xử lý sự kiện vào chrome.runtime.onSuspend, nhưng không bao giờ được gọi.

Tôi sử dụng mã sau đây, nhưng localStorage không được sửa đổi và không có thông báo tường trình trong bảng điều khiển (tôi sử dụng --enable-logging --v=1 để lưu thông điệp tường trình vào tệp).

chrome.runtime.onSuspend.addListener(function() { 
    localStorage["suspend"] = new Date(); 
    console.log("On suspend"); 
}); 

hộp Kiểm tra: WinXP SP3 x86 với Chrome 28.0.1500.72 m

tôi đã tạo ra phần mở rộng thử nghiệm để dễ dàng tạo lại vấn đề này:

manifest.json

{ 
    "manifest_version": 2, 

    "name": "Chrome onSuspend test", 
    "version": "1.0", 

    "background": { 
    "scripts": ["background.js"] } 
} 

background.js

chrome.runtime.onSuspend.addListener(function() { 
    localStorage["suspend"] = new Date(); 
    console.log("On suspend"); 
}); 

Trả lời

8

Sự kiện onSuspend chỉ được kích hoạt khi trang sự kiện trở nên không hoạt động.

Bởi vì bạn đã không khai báo persistent: false trong file manifest của bạn, trang nền là một background page, không phải là một event page. Do đó, trang sẽ không bao giờ trở thành không hoạt động và sự kiện onSuspend sẽ không bao giờ được kích hoạt.

Nếu bạn muốn biến trang nền của bạn trong trang sự kiện, sử dụng

... 
    "background": { 
     "scripts": ["background.js"], 
     "persistent": false 
    } 
} 
+2

nên không trang nền trở nên không hoạt động trên trình duyệt đóng/mở rộng loại bỏ hoặc gia hạn các sự kiện vô hiệu hóa? – Anton

+3

Tôi làm cách nào để xử lý các sự kiện này? – Anton

+0

@Anton Bạn không thể. Khi trình duyệt đóng, tất cả các tiện ích sẽ bị chấm dứt mà không có bất kỳ thông báo nào. –

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