2010-10-04 3 views
5

Tôi đang tạo tiện ích mở rộng chrome sử dụng hành động pageAction.hiển thị cửa sổ bật lên hành động trang trên nhấp chuột

Tôi có thể đặt thời điểm nó cho biết tôi có muốn cửa sổ bật lên hoặc tự xử lý lần nhấp hay không.

Điều tôi muốn làm là tự xử lý lần nhấp, nhưng với một số trường hợp nhất định, tôi không muốn xử lý mã thông thường và muốn hiển thị thông báo cho người dùng. Tốt hơn với một popup.

Nhưng đường nối có thể khiến trangAction có cửa sổ bật lên hoặc có onClick. Nhưng không phải cả hai.

I có thể hiển thị cảnh báo, nhưng điều đó thật xấu.

Trả lời

3

Hiện tại, không có cách "gọn gàng" hoặc chính thức để xử lý cả hai. Bạn chỉ có thể làm một trong hai. Nhưng có một số công việc xung quanh mà một số sản phẩm mở rộng của Google đã thực hiện.

Trước hết, hãy thiết lập để hiển thị cửa sổ bật lên. Và trong vòng pageAction cửa sổ bật lên, bạn có thể có mã khởi tạo được một cái gì đó như thế này:

Trang Action Popup:

function init() { 
    if (getClickBehaviour() == 'popup') 
    handlePopup(); 
    else 
    openPage(); 
} 

function getClickBehaviour() { 
    return localStorage['CLICK_BEHAVIOR'] || 'popup'; 
} 

function openPage() { 
    chrome.tabs.create({url: 'http://google.ca'}); 
    window.close(); 
    }); 
} 

init(); 

Sau đó, bạn có thể cho lựa chọn của bạn, thiết lập các hoạt động nhấp. Nếu bạn muốn các hành vi khác nhau trên mỗi nhấp chuột, bạn cũng có thể làm điều đó.

Khi bạn nhận thấy, chúng tôi sẽ đóng cửa sổ bật lên ngay sau hành vi "mặc định" mà chúng tôi không muốn cửa sổ bật lên hiển thị. Đó là cách duy nhất để thực hiện các hành vi khác nhau.

0

Tôi chưa tự mình thử nghiệm, nhưng bạn đã thử đặt cửa sổ bật lên thành chuỗi trống khi bạn muốn xử lý nhấp chuột (chrome.pageAction.setPopup('')) và để bật lên khi bạn muốn hiển thị thông báo. Tôi không hoàn toàn chắc chắn nếu trình xử lý sự kiện onClicked được gọi trong trường hợp đó (nơi cửa sổ bật lên được đặt động vào chuỗi trống), nhưng nó đáng xem xét.

Theo như tôi biết, thường không có cách nào để lập trình mở cửa sổ bật lên cho một trang hoặc hành động của trình duyệt. (Đó là quá xấu, tôi sẽ yêu thích chức năng này, nhưng bạn có thể tưởng tượng một số phiền toái nếu điều này là có thể.)

+0

khi cửa sổ bật lên được đặt, onClicked không kích hoạt, do đó, nó cần phải là cách khác xung quanh – HannesNZ