Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我需要使用URL中的锚(#)更新我的页面_Javascript_Html_Ajax_Hashchange - Fatal编程技术网

Javascript 我需要使用URL中的锚(#)更新我的页面

Javascript 我需要使用URL中的锚(#)更新我的页面,javascript,html,ajax,hashchange,Javascript,Html,Ajax,Hashchange,index.php <html> <head> <title>My Title</title> <script type="text/javascript"> function getLink(data) { document.getElementById("box").innerHTML="This is "+data; } </script> </head> <bo

index.php

<html>
 <head>
  <title>My Title</title>
  <script type="text/javascript">
   function getLink(data) {
    document.getElementById("box").innerHTML="This is "+data;
   }
  </script>
 </head>
 <body>
  <a href="#home" onClick="getLink('Home')">Home</a><br />
  <a href="#profile" onClick="getLink('Profile')">Profile</a><br />
  <a href="#message" onClick="getLink('Message')">Message</a><br />
  <a href="#setting" onClick="getLink('Setting')">Setting</a><br />
  <hr />
  <div id="box"></div>
 </body>
</html>
但它只在用户
返回
然后
刷新页面


请帮助我如何实现这一点:(

检查HTML5历史API。它允许您使用浏览器历史


或者window.onhashchange事件如果你不想使用jQuery

如果你打算使用AJAX,除非你的意图是教育性的,否则你真的会考虑使用而不是原始javascript。jQuery现在只是web的一个支柱

如果必须使用这些散列…

使用,并使用
hashchange
事件:

<a href='#home'>Home</a>
function hash_changed() {
    var data = document.location.hash.substr(1);
    var box = document.getElementById("box");

    if (data) {
        // inner page
        box.innerHTML="This is " + data;
    }
    else {
        // homepage
        box.innerHTML = "";
    }
}

window.onhashchange = function () {
    hash_changed();
};

window.onload = function () {
    hash_changed();
};
但是,对于您的场景…

根据提供的代码,在传递函数参数中的值时,根本不需要使用这些值,只需执行以下操作:

<a href="" onClick="getLink('Home');return false;">Home</a><br />

您需要使用
hashchange
事件:

<a href='#home'>Home</a>
function hash_changed() {
    var data = document.location.hash.substr(1);
    var box = document.getElementById("box");

    if (data) {
        // inner page
        box.innerHTML="This is " + data;
    }
    else {
        // homepage
        box.innerHTML = "";
    }
}

window.onhashchange = function () {
    hash_changed();
};

window.onload = function () {
    hash_changed();
};
另外,当您使用
hashchange
事件时 无需为链接设置
onclick

<a href="#home">Home</a>
<a href="#profile">Profile</a>
<a href="#message">Message</a>
<a href="#setting">Setting</a>
我们必须显示想要的页面(
消息
此处),因此必须运行
hash_changed()
函数
我们第一次在上面声明。为此,我们必须等待DOM就绪或
窗口。onload

使用。可以做的一件事是在DOM就绪上添加对getLink()函数的调用。在DOM就绪上,检查URL并检查最后一个'#'字符后的字符串。如果此字符串不为空,请调用
getLink(字符串)亲爱的UR第一方法将在打开任何链接的时候打开同一页,第二种方法将它视为一个URL,因此不会有链接被点击的历史。before@AbarChoudhary-更新了第一个答案。试试看。有一个使用相同的方法。是的,但它能在所有主流浏览器中工作,我是说兼容的浏览器只有HTML4???@AbarChoudhary是的,它适用于所有浏览器以及IE8和更高版本。有趣的是,IE8是第一个引入
hashchange
event
;)
的浏览器。嗯,最后你给了我解决方案::D--
$('.divLink').click(function(){
    $('#box').html("This is "+$(this).id());
}
function hash_changed() {
    var data = document.location.hash.substr(1);
    var box = document.getElementById("box");

    if (data) {
        // inner page
        box.innerHTML="This is " + data;
    }
    else {
        // homepage
        box.innerHTML = "";
    }
}

window.onhashchange = function () {
    hash_changed();
};

window.onload = function () {
    hash_changed();
};
<a href="#home">Home</a>
<a href="#profile">Profile</a>
<a href="#message">Message</a>
<a href="#setting">Setting</a>
http://fiddle.jshell.net/B8C8s/9/show/#message