對於踢腿和咯咯,我試圖編寫一個Firefox擴展。只是一個非常簡單的。我已經瀏覽了我找到的教程,並且已經獲得了基本的「Hello,World」應用程序的工作。Firefox擴展:爲現有的Chrome XUL元素添加功能
我想要做的是將一個事件監聽器添加到瀏覽器的 Firefox應用程序DOM(即選項卡)中的現有元素。到目前爲止,我所能找到的所有資源都顯示瞭如何將新元素添加到應用程序,然後使用javascript爲其添加操作。我已經嘗試了幾種添加javascript函數(我知道可行,因爲我已經成功地將函數添加了元素)添加到現有元素的幾種方法。
我最近在此嘗試的結構如下:
<?xml version="1.0"?>
<!-- in myExtension.xul -->
<overlay id="myExtension"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript">
var tabs = document.getElementsByTagName("tabbrowser-tab")
var len = tabs.length;
for (var i = 0; i < len; i++) {
tabs[i].ondblclick = function() {
alert('bam!');
}
};
</script>
</overlay>
這個東西沒有工作。就像我說過的,我對這個東西完全陌生,而且我對一個週末項目也有點啓發。也許有一些方法確保我正在訪問chrome文檔而不是頁面文檔? 雖然當我嘗試使用這種技術獲取頁面元素(即「p」)時,這也不起作用,所以這可能是死路一條。
[編輯] 嘗試清除了一些混亂:
我的意思的「瀏覽器的DOM」的元素是鉻接口的一部分,不網頁元素。我正在討論如何將一個事件監聽器專門放在一個已經作爲Firefox應用程序UI的一部分存在的元素上,比如一個選項卡(不是選項卡的內容,而是選項卡本身),或者說是Home按鈕。我想重新定義Firefox應用程序GUI部分的行爲。例如,假設我想在每次點擊「新標籤」按鈕或「關閉標籤」按鈕時添加警報。或者,如果我想重新定義「重新加載」按鈕以重定向到當前選項卡的域的根目錄,而不是僅重新加載頁面。這些都是Firefox的現有部分,我想重新定義它們/通過擴展覆蓋它們,特別是通過向它們添加JavaScript操作。
[注]嵌入式JavaScript允許在xul中嗎?或者它需要在一個單獨的文件?[/註釋]
任何人有任何意見嗎?謝謝。
不document.getElementsByTagName(「tabbrowser-tab」)返回一個NodeList?你是否試圖獲得第一個標籤並註冊一個監聽器? 你可以在什麼地方發佈你的擴展? – speedball2001 2011-04-04 08:09:09
我前一陣子實際上已經注意到了這個問題,並從此修改了我的代碼嘗試。更新爲最新嘗試。 – 2011-04-05 03:30:06
該項目位於:https://github.com/shekibobo/PinFresh – 2011-04-05 03:44:02