Javascript 创建指向刷新页面的id的链接

Javascript 创建指向刷新页面的id的链接,javascript,php,Javascript,Php,我正在从事一个使用javascript制作选项卡的项目。它有3个标签 tab3的id是tab3,我需要的是一个刷新按钮,它位于tab3上,可以刷新页面。我遇到的问题是,如果单击tab3,它将显示tab3数据,但不会更改url。所以刷新按钮不起作用 我尝试了一个onclick javascript,它使用location.reload()重新加载页面,但不加载到tab3。所以我把它放在一个链接上 <a href="<?php echo $_SERVER['REQUEST_URI'];

我正在从事一个使用javascript制作选项卡的项目。它有3个标签

tab3的id是tab3,我需要的是一个刷新按钮,它位于tab3上,可以刷新页面。我遇到的问题是,如果单击tab3,它将显示tab3数据,但不会更改url。所以刷新按钮不起作用

我尝试了一个onclick javascript,它使用location.reload()重新加载页面,但不加载到tab3。所以我把它放在一个链接上

<a href="<?php echo $_SERVER['REQUEST_URI']; ?>#tab3" onclick="reloadPage();" >Refresh</a> 

这将链接到正确的位置,URL最后有#tab3,然后Javascript运行并重新加载到URL,而不带#tab3

然后我试了一下我在某处看到的

<a href="javascript:;" onclick="window.location = '<?php echo $_SERVER['REQUEST_URI']; ?>#tab3;'">Go</a>

链接,但不重新加载

最好的方法是什么?

试试这个-

<a href="#tab3" onclick="location.reload();" >Refresh</a> 

在头部推杆中

<script type='text/javascript'>
function goto(link) {
window.location = link
}
</script>

功能转到(链接){
window.location=链接
}
对你的按钮做这个

<a onclick=goto("<?php echo $_SERVER['REQUEST_URI'] . '#tab3'; ?>"); >GO </a>

使用window.location是解决方案,但是如果当前位置已经与分配的新url相同,则浏览器将不会重新加载页面。
唯一的诀窍就是让新的url看起来“新”。这可以通过添加一个随机标识符作为querystring参数来实现。
格式为:

http://hostname?<dynamic/random>#tab3
<a href="javascript:;" onclick="window.location = '<?php echo $_SERVER['REQUEST_URI']; ?>' + Date.now() + '#tab3;'">Go</a>
http://hostname?#tab3
示例:

http://hostname?<dynamic/random>#tab3
<a href="javascript:;" onclick="window.location = '<?php echo $_SERVER['REQUEST_URI']; ?>' + Date.now() + '#tab3;'">Go</a>


当前页面上带有哈希的URL告诉浏览器滚动到HTML元素,而不是重新加载。这不起作用。当您转到example.com/index.php时,它使用javascript来创建选项卡。因此,当index.php加载时,它位于tab1上。现在您可以单击tab3,它保持url不变,但会切换到tab3。现在在tab3上,我需要输入一个刷新按钮来刷新页面,但请保持在tab3上。通过上述操作,它确实链接到正确的选项卡,但不会刷新内容。这将重新记录页面。所以如果你在,你可以点击tab3,它会加载tab3的内容,但是URL保持不变,如果你点击这个链接,它会将widnow移动到tab3 id,所以URL看起来像,然后我猜Javascript会启动,页面会重新加载,但是它没有使用新的#tab3 url重新加载到index.php页面。这确实会在链接末尾添加数据,但它没有链接到#tab3,我想也许可以使用php检查tab3的$#GET,但我认为这是添加了一个我不需要的额外步骤。说明:1.)从一个选项卡移动到另一个选项卡是在JS中处理的。2.)通过javascript移动到tab3后,如果按下按钮,则需要刷新tab3的内容。如果这是真的,那么在页面加载序列中应该有JS代码在启用正确的选项卡,因为浏览器只会尝试将焦点移动到给定的#id。但是UI的整个状态机属于应用程序的JS部分,它需要处理传入的哈希链接。在PHP中这样做就像在两个不同的地方复制逻辑。我的回答只涉及请求启动。如果要使用任何If modem JS MVC框架,将通过“路由”的概念(例如主干、余烬等)处理哈希id。