链接到重新加载当前页面

时间:2011-11-17 21:04:56

标签: html hyperlink

是否可以将正常链接指向当前位置?

我目前找到了2个解决方案,但其中一个包含JavaScript,另一个则必须知道该页面的绝对路径:

<a href="#" onclick="window.location.reload(true);">1</a>
<a href="/foobar/">2</a>
<a href="#">3 (of course not working)</a>

有没有办法这样做,不使用JavaScript或知道绝对路径?

20 个答案:

答案 0 :(得分:164)

我一直在使用:

<a href=".">link</a>

尚未找到无法正常使用的案例和/或浏览器。

句点表示当前路径。您也可以使用..来引用当前路径上方的文件夹,例如,如果您有此文件结构:

page1.html
folder1
    page2.html

然后你可以在page2.html写:

<a href="../page1.html">link to page 1</a>

希望有所帮助!

修改

我不确定行为是否已经改变,或者是否总是如此,但Chrome(可能还有其他人)会将上述时段视为关于目录而非文件。这意味着,如果您位于http://example.com/foo/bar.html,那么您实际上位于/foo/目录中href.的值bar.html将引用/foo/而不是bar.html

将其视为在终端中导航文件系统;你永远不能cd进入文件:)

编辑2:

似乎使用href="."的行为不再具有可预测性,Firefox和Chrome可能都改变了他们处理这些内容的方式。我不会完全依赖我的原始答案,而是尝试在不同浏览器中使用空字符串和句点以供特定用途使用,并确保获得所需的行为。

答案 1 :(得分:126)

其他任何答案都不会预先设置任何查询字符串值。尝试

<a href="javascript:window.location.href=window.location.href">

不可否认,这确实涉及javascript但是,除非您的用户禁用了脚本,否则这非常简单。

答案 2 :(得分:63)

使用javascript的一种方式:

<a href="javascript:window.location.reload(true)">Reload</a>

答案 3 :(得分:28)

你可以这样做:<a href="">This page</a>

但我认为它不会保留GET和POST数据。

答案 4 :(得分:14)

<a href="<?php echo $_SERVER["REQUEST_URI"]; ?>">Click me</a>

答案 5 :(得分:8)

将其用于重新加载/刷新当前页面

<a href="#" onclick="window.location.reload(true);">

答案 6 :(得分:7)

<击> <a href="/">Clicking me refreshes the page</a>

<a href="?">Click Me To Reload the page</a>

答案 7 :(得分:4)

不幸的是,只有HTML才有这样做的全局方式。您可以尝试<a href="">test</a>,但它仅适用于某些浏览器。

答案 8 :(得分:4)

完全幂等的网址,用于保留路径,参数和锚点。

 <a href="javascript:"> click me </a>

它只使用了一小部分JS。

编辑:这不会重新加载页面。这是一个什么都不做的链接。

答案 9 :(得分:2)

还有一个解决方案

<a href="javascript:history.go(0)">Reload</a>

答案 10 :(得分:2)

const result = [
  {
    "date": 20200421,
    "state": "AK",
    "lat": "9875.33.00",
    "long": "-8371.42.00",
  },
  {
    "date": 20200421,
    "state": "AL",
    "lat": "5335.51.00",
    "long": "-15124.18.00",
  }
];

<a href="">Refresh!</a> 留空,将刷新页面。
如果某些信息是通过表单传递的,也可以使用。

答案 11 :(得分:1)

虽然接受的答案在IE9中对我不起作用,但确实如此:

<a href="?">link</a>

答案 12 :(得分:1)

我使用JS在jekyll网站的tags页面中只显示具有特定id的div。通过同一页面中的一组链接,可以显示相应的元素:

function hide_others() {
    $('div.item').hide();
    selected = location.hash.slice(1);
    if (selected) {
        $('#' + selected).show();
    }
    else {
    $('div.item').show();
    }
}

链接使用以下链接:

<a href="javascript:window.location.href='/tags.html#{{ tag[0] }}-ref'; hide_others()">{{ tag[0] }}</a>

答案 13 :(得分:0)

您可以使用表单对同一网址执行POST。

 <form  method="POST" name="refresh" id="refresh">
 <input type="submit" value="Refresh" />
 </form>

这为您提供了一个刷新当前页面的按钮。这有点令人讨厌,因为如果用户按下浏览器刷新按钮,他们将收到do you want to resubmit the form消息。

答案 14 :(得分:0)

尝试一下

<a href="javascript:window.location.href=window.location.href">

答案 15 :(得分:0)

我正在使用HTML解决此问题
使用:

<a href="page1.html"> Link </a>

* page1.html->键入您正在处理的文件的名称(您当前的HTML文件)

答案 16 :(得分:0)

对我来说,以前在此提供的答案正在打开一个新的选项卡/窗口(可能是由于我的浏览器设置所致)。但是我想在同一页面上重新加载/刷新。因此,上述解决方案对我不起作用。

但是,好消息是,以下(两个)中的一个对我有用。

  1. foreach
  2. function action_woocommerce_checkout_process() { // Only for guests if ( is_user_logged_in() ) return; // Isset if ( isset( $_POST['billing_phone'] ) ) { // NOT empty if ( ! empty ( $_POST['billing_phone'] ) ) { $customer_phone = $_POST['billing_phone']; } } // Isset if ( isset ( $customer_phone ) ) { // Time in seconds (1 week) $time_in_seconds = 604800; // Set limit per week $limit = 2; // Specific product name $specific_product_name = 'Buy product'; // Get orders from last week from customer by phone $orders_last_week_by_customer_phone = wc_get_orders( array( 'date_created' => '>' . (time() - $time_in_seconds ), 'billing_phone' => $customer_phone, )); // Total (counter) $total = 0; // Iterating through each order foreach ( $orders_last_week_by_customer_phone as $order ) { // Going through order items foreach ( $order->get_items() as $item ) { // Name of the product $product_name = $item->get_name(); // Compare if ( $specific_product_name == $product_name ) { // Add to total $total += 1; } } } // Show error when total >= limit if ( $total >= $limit ) { wc_add_notice( sprintf( __( 'You are not allowed to buy more than %d products. For more information please contact support.', 'woocommerce' ), $limit ), 'error' ); } } } add_action( 'woocommerce_checkout_process', 'action_woocommerce_checkout_process', 10, 0 );

答案 17 :(得分:-1)

<a href="/">Same domain, just like refresh</a>

只有当您的网站是index.html,index.htm或index.php(任何默认页面)时,似乎才有效。

但似乎.是同一件事,更接受

<a href=".">Same domain, just like refresh, (more used)</a>

当域名为http://https://

时,两者都可以在Chrome上完美展现

答案 18 :(得分:-2)

如果你使用的是php / smarty模板,你可以这样做:

<a href="{{$smarty.server.REQUEST_URI}}{if $smarty.server.REQUEST_URI|strstr:"?"}&{else}?{/if}newItem=1">Add New Item</a>

答案 19 :(得分:-3)

只需添加target =&#34; _blank&#34;并且该链接将打开一个保留原始页面的新页面。