javascript – Firefox Extensions:为现有的chrome XUL元素添加功能
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – Firefox Extensions:为现有的chrome XUL元素添加功能,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3266字,纯文字阅读大概需要5分钟。
内容图文
对于踢和笑,我正在尝试编写Firefox扩展.只是一个非常简单的.我已经完成了我找到的教程,并且我已经获得了基本的“Hello,World”应用程序.
我想做的是向浏览器的Firefox Application 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”是属于chrome界面的元素,而不是网页元素.我正在谈论将事件监听器专门放在已作为Firefox应用程序UI的一部分存在的元素上,例如选项卡(不是选项卡的内容,而是选项卡本身),或者说是主页按钮.我想重新定义Firefox应用程序GUI部分的行为.
比如说,每当有人点击“新标签”按钮或“关闭标签”按钮时,我想添加提醒.或者,如果我想重新定义“重新加载”按钮以重定向到当前选项卡的域的根,而不是仅重新加载页面.这些都是Firefox的现有部分,我想重新定义它们/通过扩展覆盖它们,特别是通过向它们添加javascript操作.
[/编辑]
[sidenote]是否允许在xul中嵌入javascript?或者它需要在一个单独的文件中?[/ sidenote]
有人对此有任何建议吗?谢谢.
解决方法:
覆盖代码中的javascript代码不起作用,因为它比gbrowser包含任何选项卡更早运行.
在Firefox(或Thunderbird)扩展中,您通常在加载事件侦听器中启动扩展:
window.addEventListener("load",
pinfresh.init,
false);
然后,init函数需要为各种tab事件注册事件监听器:
pub.init = function() {
var container = gBrowser.tabContainer;
container.addEventListener("TabOpen", tabOpened, false);
container.addEventListener("TabClose", tabRemoved, false);
};
打开新选项卡时,我们会注册另一个侦听器,当用户双击选项卡时,该侦听器将触发选项卡重新加载:
tabOpened = function(e) {
var tab = e.target;
tab.addEventListener("dblclick", tabDoubleClicked, false);
}
tabDoubleClicked = function(e) {
gBrowser.reloadTab(e.target);
}
完整的代码如下所示:
<overlay id="pinfresh"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript">
pinfresh = function() {
var pub = {};
tabOpened = function(e) {
var tab = e.target;
tab.addEventListener("dblclick", tabDoubleClicked, false);
}
tabRemoved = function(e) {
var tab = e.target;
tab.removeEventListener("dblclick", tabDoubleClicked, false);
}
tabDoubleClicked = function(e) {
gBrowser.reloadTab(e.target);
}
pub.init = function() {
var container = gBrowser.tabContainer;
container.addEventListener("TabOpen", tabOpened, false);
container.addEventListener("TabClose", tabRemoved, false);
};
return pub;
}();
window.addEventListener("load",
pinfresh.init,
false);
</script>
</overlay>
对于使用选项卡的代码片段,我建议在Mozilla开发中心使用Tab Browser页面.
我建议将Javascript代码放在自己的文件中,而不是将其包含在XUL文件中.外部Javascript文件中的错误显示在Firefox的错误控制台中,这使得调试变得更加容易.
内容总结
以上是互联网集市为您收集整理的javascript – Firefox Extensions:为现有的chrome XUL元素添加功能全部内容,希望文章能够帮你解决javascript – Firefox Extensions:为现有的chrome XUL元素添加功能所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。