是否可以将正常链接指向当前位置?
我目前找到了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或知道绝对路径?
答案 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)
对我来说,以前在此提供的答案正在打开一个新的选项卡/窗口(可能是由于我的浏览器设置所致)。但是我想在同一页面上重新加载/刷新。因此,上述解决方案对我不起作用。
但是,好消息是,以下(两个)中的一个对我有用。
foreach
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://
答案 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;并且该链接将打开一个保留原始页面的新页面。