How to get “raw” href contents in JavaScript

前端 未结 3 1709
孤独总比滥情好
孤独总比滥情好 2020-11-27 19:06

I am trying to write a GreaseMonkey script in which I want to find all of the links that are relative links. It seemed to me that the way to do that would be to match the c

相关标签:
3条回答
  • 2020-11-27 19:54

    Try the getAttribute method instead.

    0 讨论(0)
  • 2020-11-27 19:58

    Typical. I figured it out myself almost immediately after posting the question.

    instead of:

    anchor.href
    

    use:

    anchor.getAttribute("href")
    

    Of course, it took me longer to type in this answer than it took everyone else to answer it. (Damn, you people are fast.)

    0 讨论(0)
  • 2020-11-27 20:08

    Here's a code snippet you could run to test.

    const anchors = document.getElementsByTagName('a');
    
    for (let anchor of anchors) {
      let hrefFullPath = anchor.href;
      let hrefRelativePath = anchor.attributes.href.value;
    
      console.log('hrefFullPath', hrefFullPath);
      console.log('hrefRelativePath', hrefRelativePath);
    }
    

    Let's say, you are at http://localhost:4200, and this is your document as you have shown in the question.

    <a id="rel" href="/relative/link">inner</a>
    

    This anchor's attribute value of href is:

    document.getElementById('rel').attributes.href.value => /relative/link
    

    And anchor's href value is:

    document.getElementById('rel').href =>  http://localhost:4200/relative/link
    

    I hope it helps.

    0 讨论(0)
提交回复
热议问题