2009-12-21 54 views
22

Tôi đang cố tạo tiện ích chrome, tuy nhiên, nhấp chuột browser action của tôi không hoạt động! Tôi đã thử khá nhiều thứ. Đây là thiết lập của tôi:Trình duyệt Chrome Hành động nhấp chuột không hoạt động

manifest.json:

{ 
"name": "blah", 
"version": "1.0", 
"description": "blah", 
"browser_action": { 
    "default_icon": "icon1.png", 
    "popup": "popup.html" 
}, 
"permissions": [ 
    "bookmarks", 
    "tabs", 
    "http://*/*", 
    "https://*/*"  
], 
"background_page": "background.html" 
} 

popup.html:

<html> 
<head> 
<script> 
<!-- Try adding the listener in popup.html --> 
    chrome.browserAction.onClicked.addListener(function(tab){ 
    console.log("Hello from popup"); // This does not show up either 
    }); 
</script> 
</head><body> 
Hello 
</body> 
</html> 

background.html:

<html> 
<head> 
<script> 
console.log("Background.html"); // This gets displayed. O.K. 

function hello() { 
    console.log("HELLO"); // THIS NEVER GETS DISPLAYED 
} 

// Supposed to Called when the user clicks on the browser action icon. 
chrome.browserAction.onClicked.addListener(hello); 
</script> 
</head> 
</html> 

Nhưng không có gì khó khăn khi tôi bấm vào Biểu tượng không có gì xảy ra và "HELLO" không được in ra trong bảng điều khiển!

Tôi đang sử dụng Chrome 4.0.249.43. Tôi đã cài đặt phiên bản Beta NHƯNG nó là chính xác giống như phiên bản phát hành (cùng một số verion). Có thể đó là một vấn đề?

Trả lời

40

Bạn không thể có "cửa sổ bật lên" với sự kiện onclick. Xóa popup.html khỏi tệp kê khai. Và giữ trang nền và nó sẽ hoạt động.

+5

Đó là chính xác. Popup loại bỏ hoàn toàn sự kiện onclick! Đã cho tôi hai ngày để tìm ra điều đó. – drozzy

+1

Có ai trong nhóm gia hạn Chrome từng nghe về POLA không? https://en.wikipedia.org/wiki/Principle_of_least_astonishment – Pacerier

+0

Tài liệu mở rộng của Chrome hút – Legends

0

Theo doc:

chrome.browserAction.onClicked.addListener(function(Tab tab) {...}); 

vậy:

// Supposed to be called when the user clicks on the browser action icon.  
chrome.browserAction.onClicked.addListener(function(tab) { 
    hello(); 
}); 

nên làm việc

+0

Vì anh ta không bao giờ sử dụng hoặc gọi là 'tab', và không bao giờ sử dụng ngữ cảnh (' this'), điều này sẽ không tạo ra sự khác biệt ... –

0

Bạn có chắc chắn rằng bạn đang xem đúng bảng điều khiển JavaScript cho trang nền, và không cho tab khác?

Thử phương thức hello() của bạn đặt biến toàn cục trong trang nền, sau đó có nút trong popup.html truy xuất biến đó (sử dụng chrome.extension.getBackgroundPage()) và hiển thị nó dưới dạng cảnh báo.

+0

Xin chào, tôi đã chỉnh sửa để cho thấy rằng tôi đã thử thêm người nghe vào popup.html và nó không hoạt động ... – drozzy

2

Bạn cần xóa popup.html, bạn đã có cửa sổ bật lên trong popup.html trong lý thuyết background.html nên thực hiện sự kiện cho browserAction nhưng không đúng. Khi bạn nhấp vào biểu tượng Ứng dụng của bạn, bạn đã xác định một chức năng được nhấp vào trong cửa sổ bật lên.

tôi không biết những gì bạn cần, nhưng bạn có thể tạo nhiều chức năng khi bạn nhấp vào trong trình duyệt.

Ví dụ: trong background.html làm:

foo(){ 
     if(browserAction && browserAction.onClicked) // you can add all stuff that you need. 
     do something 
    } 

và bạn gọi từ popup.html với chrome.extension.getBackgroundPage() foo();.

tôi hy vọng điều này sẽ giúp bạn.

1

Tôi cũng gặp một số sự cố trong khi cố tạo tiện ích chrome. Đảm bảo bạn tải lại tiện ích sau khi có bất kỳ thay đổi nào đối với tệp manifest.json hoặc trang nền. Để tải lại, hãy truy cập trang tiện ích mở rộng (cờ lê> công cụ> tiện ích mở rộng) và chọn tải lại. Đó có thể chỉ là nguyên nhân của vấn đề, mọi thứ khác có vẻ tốt.

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