Keep URL unaffected when anchor link is clicked

倖福魔咒の 提交于 2019-12-09 11:39:08

问题


I've checked other posts on here, no results of what I'm looking for. I want to click on

<a href="#about">About</a>
<div id="about">Content of this..</div>

and have it scroll to that element without putting www.domain.com/#about in the address bar

As a perfect example please check out this site that I found here and click on some of the links --they don't change the address bar when clicked.


回答1:


Played around with this myself and here is a summary of my learnings on the subject.

Here's the basic link command:

<A HREF="#codeword">Blue Words</A>

Here's how you denote where the jump will scroll the page:

<A NAME="codeword">

Here's what's happening

The A HREF command is the same as a basic link except the link is to a codeword rather than a URL.

PLEASE NOTICE there is a # sign in front of the codeword. You need that to denote it is an internal link. Without the # sign, the browser looks for something outside the page named after your codeword.

Your "codeword" can be just about anything you want. I try my best to keep it short and make it denote what it is jumping to. There might be a limit to the number of letters you can use--but I haven't found it yet.

The point where the page will jump follows the same general format except you will replace the word HREF with the word NAME.

PLEASE NOTICE there is no # sign in the NAME command.

Note! Where you place the NAME target will appear at the top of the screen browser.

Hope it helps.




回答2:


You can do what you want using javascript and jquery, example below (note that this is using an old version of jquery):

<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>

    <script type='text/javascript'>
    jQuery(document).ready(function($) {

        $(".scroll").click(function(event){
            event.preventDefault();
            $('html,body').animate({scrollTop:$(this.hash).offset().top}, 1200);
        });
    });
    </script>
</head>
<body>
    <a class="scroll" href="#codeword">Blue Words</a>
    <div id="codeword"></div>
</body>
</html>



回答3:


window.location.hash = ""  

is the possible way I could find.

hash gives the string next to #.




回答4:


//dont use a, use class

 $(document).ready(function(){
 $(".mouse").on('click', function(event) {
// Make sure this.hash has a value before overriding default behavior
  if (this.hash !== "") {
  // Prevent default anchor click behavior
  event.preventDefault();
 // Store hash
  var hash = this.hash;
 // Using jQuery's animate() method to add smooth page scroll
  // The optional number (800) specifies the number of milliseconds it takes 
 to scroll to the specified area
  $('html, body').animate({
    scrollTop: $("#section").offset().top
  }, 800, function(){
   // Add hash (#) to URL when done scrolling (default click behavior)
    window.location.hash = "";
  });
} // End if  }); });



回答5:


One possible workaround is to use a <button> instead of a <a>.

So rather than....

<a href="#about">About</a>
<div id="about">Content of this..</div>

...you can change it to

<button href="#about">About</button>
<div id="about">Content of this..</div>

This way the anchor link will not affect the URL.



来源:https://stackoverflow.com/questions/17012592/keep-url-unaffected-when-anchor-link-is-clicked

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!