javascript - 如何在javascript中进行元素提取?

标签 javascript angularjs typescript

我有任何网页网址的占位符。当我单击按钮时它应该提取元素。我必须在页面中显示元素和 xpath 值。我怎样才能做到这一点?请帮助我。

最佳答案

我不确定这是否是您想要的,但如果您需要显示每个元素的 XPath,这是我的解决方案:

function buildDom(text) {
  var div = document.createElement('div');
  div.innerHTML = text;
  return div.firstChild;
}

function fetchAttrs(node) { // getting attributes object for element
  return node && Array.prototype.reduce.call(node.attributes, function(list, attribute) {
    list[attribute.name] = attribute.value;
    return list;
  }, {}) || {};
};

function traverseElement(element, argPrefix = "") {
  if (element.nodeType === Node.TEXT_NODE)
    return; // skipping text elements

  var attrs = fetchAttrs(element)
  var prefix = argPrefix + "/" + element.tagName; // build element path
  if (Object.keys(attrs).length !== 0){
    prefix += "[" + Object.keys(attrs).map((value, index) => {
      return "@" + value + ' = "' + attrs[value] + '"'
    }).join(" and ") + "]" // append arguments
  }

  console.log(prefix);

  var children = element.childNodes // iterating over children
  for (var i = 0; i < children.length; i++)
  {
    traverseElement(children[i], prefix)
  }
}

var url = "https://icanhazip.com/" // URL to load

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) { // when loaded
    var dom = buildDom(this.responseText); // build a DOM tree from a response string
    traverseElement(dom) // and traverse it
  }
};
xhttp.open("GET", url, true); 
xhttp.send(); // loading needed website

关于javascript - 如何在javascript中进行元素提取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39741771/

相关文章:

javascript - 如何使用 css/js 为表中的每一行创建不同长度的列?

javascript - 在 Promise 中作为回调函数引用类函数中的类对象

javascript - Protractor - 在哪里使用 browser.waitForAngular()

javascript - [(ngModel)] 绑定(bind)总是字符串吗?

TypeScript:<type> 的字符串

javascript - 关于 Javascript 中的嵌套函数

javascript - Angular 过滤器在 1.3 版本中无法正确过滤,在 1.5 版本中是否更好?

javascript - Angular ng-repeat 的值错误?

javascript - Angular ui 树在 mozilla 中不起作用

reactjs - 不能将 React Icons 组件用作对象值 typescript