为了好玩,我正在尝试编写一个Firefox扩展程序。只是一个非常简单的扩展程序。我已经阅读了一些教程,并且成功创建了基本的“Hello, World”应用程序。
我想要做的事情是,在Firefox应用程序DOM(即选项卡)中的现有元素上添加事件监听器。到目前为止,我能够找到的所有资源都显示如何向应用程序添加新元素,然后使用JavaScript添加操作。我已经尝试过多种方法来添加JavaScript函数(我知道这些函数有效,因为我已经成功地使用该函数添加了元素)到现有元素中。
我最近的尝试结构如下:
这些东西都不起作用。就像我说的,我对这些完全是新手,只是在周末项目上得到了一点启发。也许有一种方法可以确保我访问的是Chrome文档而不是页面文档?虽然当我尝试使用这种技术获取页面元素(即“p”)时,也不起作用,所以这可能是个死胡同。
[编辑]
为了澄清一些混淆的事情:
我的意思是“浏览器的DOM”,是指作为Chrome界面一部分的元素,而不是网页元素。我说的是在Firefox应用程序UI中已经存在的元素上放置事件监听器,例如一个选项卡(不是选项卡的内容,而是选项卡本身),或者Home按钮。我想重新定义Firefox应用程序GUI的某些部分的行为。
例如,假设我想在每次单击“新建标签”按钮或“关闭标签”按钮时添加一个警报。或者如果我想重新定义“重新加载”按钮,使其重定向到当前选项卡域的根目录,而不仅仅是重新加载页面。这些都是Firefox的现有部分,我想通过扩展来重新定义它们/覆盖它们,具体是通过向它们添加JavaScript操作。
[/编辑]
[旁注]嵌入式JavaScript在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文档而不是页面文档?
我的意思是“浏览器的DOM”,是指作为Chrome界面一部分的元素,而不是网页元素。我说的是在Firefox应用程序UI中已经存在的元素上放置事件监听器,例如一个选项卡(不是选项卡的内容,而是选项卡本身),或者Home按钮。我想重新定义Firefox应用程序GUI的某些部分的行为。
例如,假设我想在每次单击“新建标签”按钮或“关闭标签”按钮时添加一个警报。或者如果我想重新定义“重新加载”按钮,使其重定向到当前选项卡域的根目录,而不仅仅是重新加载页面。这些都是Firefox的现有部分,我想通过扩展来重新定义它们/覆盖它们,具体是通过向它们添加JavaScript操作。
[/编辑]
[旁注]嵌入式JavaScript在xul中允许吗?还是需要单独的文件?[/旁注]
有人有什么建议吗?