javascript - 获取 DOM 中的所有 href 链接

标签 javascript google-chrome-extension

我需要编写代码,将网页中的所有 href 链接放入一个数组中。这是我到目前为止所拥有的:

var array = [];
var links = document.links;
for(var i=0; i<links.length; i++) {
  array.push(links[i].href);
}

但是,这在 Gmail 收件箱之类的页面上不起作用,因为某些链接位于 iframe 中。我怎样才能获得所有 链接,包括 iframe 内的链接?

另外,这是一个 google chrome 扩展。在 list 中,我将 all_frames 设置为 true - 这有什么不同吗?

谢谢

最佳答案

记住一点

  1. 文档.链接
  2. 文档.图像
  3. 文件.表格
  4. 文档.表单[0].元素
  5. document.getElementsByName()
  6. document.getElementsByClassName()
  7. document.getElementsByTagName()

是对 DOM 对象的实时查询,因此在 forLoops 中它可能会显着减慢您的执行速度(因为 i < links.length 是每个 for 循环的查询),如果您像这样检查数组长度:

var array = [];
var links = document.getElementsByTagName("a");
for(var i=0; i<links.length; i++) {
    array.push(links[i].href);
}

你最好这样做:

var array = [];
var links = document.getElementsByTagName("a");
for(var i=0, max=links.length; i<max; i++) {
    array.push(links[i].href);
}

关于javascript - 获取 DOM 中的所有 href 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8922899/

相关文章:

javascript - 利用 document.forms[0].elements ['someid' ].style.backgroundColor

javascript - 使用 JQuery 或 Javascript 访问 Datalist 标签

javascript - 如何将数组从background.js传递到inject.js(内容)脚本(Chrome扩展)

javascript - 将 chrome.storage 中设置的值从选项页面发送到内容脚本

javascript - 无法使用哈希语法从 JS 对象检索值

javascript - 那么这个 promise 如何发挥作用呢?

javascript - chrome.tabs.executeScript 在 chrome.tabs.create 回调中不起作用

javascript - 如何在 chrome 扩展程序中保持选项卡的状态

javascript - 在 Web 应用程序和扩展程序之间共享 localStorage

javascript - 如何阻止 iframe 滚动直到它完全位于页面上? (里面的图片)