2015-04-29 13 views
5

Tôi cần tạo trình bổ sung Firefox thêm nút vào thanh địa chỉ nếu tab nằm trong một miền nhất định.cách tạo tiện ích mở rộng/tiện ích mở rộng thêm biểu tượng/nút vào thanh địa chỉ của Firefox nếu tab đang mở trong một miền nhất định?

Tôi đã quản lý để tìm phần tử biểu tượng thanh điều hướng cho cửa sổ hiện tại và thêm một con, nhưng điều đó thêm biểu tượng vào tất cả các tab cho cửa sổ đó, thay vì chỉ là tab có liên quan. Tôi có thể làm cái này như thế nào?

EDIT: Xin lỗi tôi đã sử dụng thiết bị di động và không bao gồm mã.

gì tôi có cho đến nay:

var windowsUtils = require('sdk/window/utils'); 

var loadButton = function(doc, urlBtnClick) { 
    var urlBarIcons = doc.getElementById('urlbar-icons'); 

    var btn = doc.createElement('toolbarbutton'); 
    btn.setAttribute('id', 'button-icon'); 
    btn.setAttribute('image', self.data.url('./images/icon16.png')); 
    btn.click(onButtonClick); 
    urlBarIcons.appendChild(btn); 
    return btn; 
} 

var onButtonClick = function(event) { 
    console.log('i was clicked'); 
} 

bất cứ khi nào tôi gọi trên i thêm một biểu tượng/nút để mỗi tab thay vì một trong những hoạt động hiện hành.

+1

Tiện ích bổ sung demo này chỉ thực hiện điều này nhưng không xem e10 là cũ (1 năm cũ) và cần cải thiện, nhưng nó sẽ hoạt động: https://gist.github.com/Noitidart/9266173 tôi vừa cài đặt nó trên Firefox Beta kênh và nó hoạt động. nó thêm khối màu cam vào thanh trên trang không phải newtab và khi tiêu điểm của người dùng không có trong thanh url. – Noitidart

+0

Bạn đã thử mã nào? Vui lòng * [sửa] câu hỏi * để bao gồm mã nguồn của bạn. Vui lòng xem [Tôi có thể hỏi những chủ đề gì ở đây?] (Http://stackoverflow.com/help/on-topic), [Làm cách nào để đặt câu hỏi hay?] (Http://stackoverflow.com/help/how -để hỏi) và [Cách tạo một ví dụ tối thiểu, đầy đủ và có thể xác minh được] (http://stackoverflow.com/help/mcve). Nếu chúng tôi sẽ cố gắng để xác minh giải pháp của chúng tôi làm việc cho bạn nó là MUCH dễ dàng hơn để làm như vậy nếu chúng ta có mã của bạn để bắt đầu từ hơn là phải làm cho nó tất cả lên. Nếu không có mã như vậy sẽ có ít động cơ để tìm câu trả lời cho bạn. – Makyen

+0

@Noitidart cảm ơn bạn, nhưng rất mới mẻ với điều này, một chút khó hiểu. Vì tôi đang sử dụng add-on SDK và bootstrapping được thực hiện tự động, làm thế nào tôi có thể sử dụng file bootstrap này? Có cách nào dễ hơn không? – tiagosilva

Trả lời

0

Đây là một thực hiện hacky chỉ sử dụng các tab của SDK và apis nút:

let { ActionButton } = require("sdk/ui/button/action"); 
let tabs = require('sdk/tabs'); 
let soButton; 

tabs.on('activate', (tab) => { 
    if (/^http[s]*\:\/\/stackoverflow.com/.test(tab.url)) { 
    soButton = ActionButton({ 
     id: "so-button", 
     label: "This is StackOverflow!!", 
     icon: { 
     "16": "chrome://mozapps/skin/extensions/extensionGeneric.png", 
     "32": "chrome://mozapps/skin/extensions/extensionGeneric.png" 
     }, 
     onClick: function(state) { 
     console.log("clicked"); 
     } 
    }); 
    } else { 
    if (soButton && typeof (soButton.destroy === 'Function')) { 
     soButton.destroy(); 
    } 
    } 
}); 

Nó cảm thấy klugey để tạo/phá hủy các nút mỗi khi chúng tôi chuyển đổi các tab, nhưng kinh nghiệm người dùng là chính xác những gì bạn muốn. Cách tiếp cận tương tự và có lẽ 'được hỗ trợ tốt hơn' có thể thay vì chỉ là disable the button.

+0

Nhưng điều này sẽ tạo/phá hủy nút tab, tôi muốn thêm biểu tượng/thanh địa chỉ của thanh địa chỉ như trình bổ sung phát hiện nguồn cấp dữ liệu rss này: http://imgur.com/7gum4uD tôi đoán tôi có thể sử dụng cùng một chiến lược phá hủy/tạo biểu tượng ở mọi công tắc tab như bạn làm, cảm ơn – tiagosilva

+0

Ah, ok. Có - bạn có thể sử dụng cùng một chiến lược. – canuckistani

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