有没有一种更快的方法可以在网页中的 url/链接旁边添加图标 - 替代使用“onload”事件?

发布于 2024-10-04 07:05:40 字数 363 浏览 5 评论 0原文

我正在编写一个 Firefox 插件,它会在网页中的所有 URL 旁边添加小图标。

我现在这样做的方式是:

  1. window.addEventListener("load", AddIconsToURLs, false);
  2. 在 AddIconsToURLs 函数中: 获取标签名称“a”的所有元素 对于每个“a”元素,附加一个“img”元素。

然而,对于某些网页,图标需要很长时间才能出现,因为“onload”事件需要时间。

有没有更快的方法来实现这一点? 有没有办法在加载特定链接后立即在链接旁边添加图标,而不是等待所有链接加载,然后在每个链接旁边添加图标?

任何帮助表示赞赏。谢谢。

I am writing a Firefox add-on that adds little icons next to all the urls in a web page.

The way I am doing it right now is :

  1. window.addEventListener("load", AddIconsToURLs, false);
  2. In AddIconsToURLs function:
    Get all elements by tag name "a"
    For each "a" element, append an "img" element.

However, for some web pages, the icons take a lot of time to appear since the "onload" event takes time.

Is there any faster way to make this happen ?
Rather than waiting for all the links to load and then adding icons next to each of them, is there any way to add an icon next to a link as soon as that particular link is loaded ?

Any help is appreciated. Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我乃一代侩神 2024-10-11 07:05:40

您想对这些图像做什么?有什么特别的吗?如果只是为了美观,更简单的方法是在插件中加载 CSS 样式表并使用 :after 伪元素:

a:after {
  content: url('chrome://youraddon/skin/imagefile.png');
}

不涉及 JavaScript 处理:)

您可以使用以下方式加载自定义 CSS 文件:

var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"]
          .getService(Components.interfaces.nsIStyleSheetService);
var ios = Components.classes["@mozilla.org/network/io-service;1"]
          .getService(Components.interfaces.nsIIOService);
var uri = ios.newURI("chrome://youraddon/skin/cssfile.css", null, null);

if(!sss.sheetRegistered(uri, sss.AGENT_SHEET)) {
    sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
}

另请参阅 使用样式表服务

What do you want to do with the images? Anything special? If it is just for the look, much easier would be to load a CSS style sheet in your addon and use the :after pseudo element:

a:after {
  content: url('chrome://youraddon/skin/imagefile.png');
}

No JavaScript processing involved :)

You can load a custom CSS file with:

var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"]
          .getService(Components.interfaces.nsIStyleSheetService);
var ios = Components.classes["@mozilla.org/network/io-service;1"]
          .getService(Components.interfaces.nsIIOService);
var uri = ios.newURI("chrome://youraddon/skin/cssfile.css", null, null);

if(!sss.sheetRegistered(uri, sss.AGENT_SHEET)) {
    sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
}

See also Using the Stylesheet Service.

长亭外,古道边 2024-10-11 07:05:40

您还可以收听另一个活动:

document.addEventListener("DOMContentLoaded", AddIconsToURLs, false);

There is another event you can listen to:

document.addEventListener("DOMContentLoaded", AddIconsToURLs, false);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文