在JS中可以用window.location.href = window.location.href来刷新页面(当然还有很多其他的方法),
在使用这个方法刷新页面的时候回出现问题,如下:
分析这段代码你会发现,当点击###后,再点击Button页面不会刷新。
想必看到这里你已经知道问题所在,就是在点击###后,Url上会加上一个#,
于是refresh()方法就变成了 window.location.href ="www.something.com/test.aspx#"
成为了一个锚点。
我的解决方法也很简单:window.location.href = window.location.href.replace(/#/g,''); 替Url中的换所有#
一般来说这样替换不会有问题,url中一般不含有#,替换后也不会导致链接失效。
发表评论
其实如果叶面真的有锚点应用了 你这样又变得不合适了
我记得有location.reload 方法的 能给我讲讲为什么要用
window.location.href = window.location.href么 三年多没做web ui了 已经忘记差不多了 还请共享下~~~
我记得有location.reload 方法的 能给我讲讲为什么要用
window.location.href = window.location.href么 三年多没做web ui了 已经忘记差不多了 还请共享下~~~
<a href="java:void(0)">###</a>
<a href="javascript:void(0)">###</a>
汗,居然打错
汗,居然打错
--引用--------------------------------------------------
痴情客: location.reload()不是要你用来刷新的吗?弄这旁门左道?
--------------------------------------------------------
我之前就说了刷页面就很多方法,但location.reload()和
window.location.href = window.location.href 这有区别的!
区别在于:
如果在reload之前想服务器提交过数据,那么执行reload会重新执行这个提交操作。
而window.location.href = window.location.href 则不会,因为它是重新进入页面。
痴情客: location.reload()不是要你用来刷新的吗?弄这旁门左道?
--------------------------------------------------------
我之前就说了刷页面就很多方法,但location.reload()和
window.location.href = window.location.href 这有区别的!
区别在于:
如果在reload之前想服务器提交过数据,那么执行reload会重新执行这个提交操作。
而window.location.href = window.location.href 则不会,因为它是重新进入页面。
接5楼~~~~
aspx:
<body>
<form id="form1" runat="server">
<div>
<input id="Button2" type="button" value="reload" οnclick="window.location.reload();" />
<input id="Button3" type="button" value="href" οnclick="window.location.href= window.location.href;" />
<asp:Button ID="Button1" runat="server" Text="刷新前先点我" OnClick="Button1_Click" />
</div>
</form>
</body>
cs:
protected void Button1_Click(object sender, EventArgs e)
{
string s = string.Empty; //在这里设置断点
}
先点“button1”,然后点reload,你会发现此时也会进入断点,而点href就不会。
aspx:
<body>
<form id="form1" runat="server">
<div>
<input id="Button2" type="button" value="reload" οnclick="window.location.reload();" />
<input id="Button3" type="button" value="href" οnclick="window.location.href= window.location.href;" />
<asp:Button ID="Button1" runat="server" Text="刷新前先点我" OnClick="Button1_Click" />
</div>
</form>
</body>
cs:
protected void Button1_Click(object sender, EventArgs e)
{
string s = string.Empty; //在这里设置断点
}
先点“button1”,然后点reload,你会发现此时也会进入断点,而点href就不会。
页面产生可能是一个post的结果 也可能是一个get的结果 也可能是get和post混合的结果
你的希望是去掉上次所有的post信息 但是保留get所有的信息?
这个需求有点怪:D 如果我设计站的架构 是会尽力回避这样的流程出现的。你确实做到了 但是万一本页面真的需要传递锚点信息的话 你会把锚点信息删除
所以我建议直接增加一个无意义参数比较好
比如说
a.aspx?id=1#a
替换成
a.aspx?id=1×tmp=yyyymmddrandom#a
这样保证前面get 的url的get参数有所变化 location.href修改后 浏览器也会强制刷新 后面的锚点也不会丢失
希望能对你有所帮助
直接window.location.href=window.location.pathname不就完了嘛!如果有参数的话 window.location.href=window.location.pathname+window.location.search
--引用--------------------------------------------------
直接window.location.href=window.location.pathname不就完了嘛!如果有参数的话
window.location.href=window.location.pathname+window.location.search
--------------------------------------------------------
lz的要求是 “希望是去掉上次所有的post信息 但是保留get所有的信息 适当抛弃锚点” 你做到了~~
我的方案是 “希望是去掉上次所有的post信息 但是保留get所有的信息 也不抛弃锚点”
赫赫
@HarborHouse咱们一起改
直接window.location.href=window.location.pathname不就完了嘛!如果有参数的话
window.location.href=window.location.pathname+window.location.search
--------------------------------------------------------
lz的要求是 “希望是去掉上次所有的post信息 但是保留get所有的信息 适当抛弃锚点” 你做到了~~
我的方案是 “希望是去掉上次所有的post信息 但是保留get所有的信息 也不抛弃锚点”
赫赫
@HarborHouse咱们一起改
这个回复功能有问题吗,我修改了回复之后,再回复,还是修改,郁闷了,要重新进才行~
window.location.href=window.location.pathname+window.location.search+location.hash
window.location.href=window.location.pathname+window.location.search+location.hash
@HarborHouse
貌似你要回复以后 点下面的连接“修改成功! 继续发表评论, 请点击。 ”刷新本页才能继续
window.location.pathname+window.location.search+location.hash
最后这个成功的得出了完全的字符串 但是因为里面有# 而前面的地址仍然没有变化 只有#后面的矛点变了
所以url对于ie的认证来说 还是没有变化 仍然不会刷新
话说第一次知道 hash 是做这个用的 试验了下 果然是#后面的东西。。。 也算学到了东西 谢谢
貌似你要回复以后 点下面的连接“修改成功! 继续发表评论, 请点击。 ”刷新本页才能继续
window.location.pathname+window.location.search+location.hash
最后这个成功的得出了完全的字符串 但是因为里面有# 而前面的地址仍然没有变化 只有#后面的矛点变了
所以url对于ie的认证来说 还是没有变化 仍然不会刷新
话说第一次知道 hash 是做这个用的 试验了下 果然是#后面的东西。。。 也算学到了东西 谢谢
@韦恩卑鄙
可以加MSN讨论下电子商务,或者购物车的内容么,上次看你讨论得蛮激烈的!
可以加MSN讨论下电子商务,或者购物车的内容么,上次看你讨论得蛮激烈的!
--引用--------------------------------------------------
HarborHouse: @韦恩卑鄙
可以加MSN讨论下电子商务,或者购物车的内容么,上次看你讨论得蛮激烈的!
--------------------------------------------------------
邮件和msn都是 blackshaman_wayne@hotmail.com
T_T 公司不能开msn
邮件的话过几天可能能用
HarborHouse: @韦恩卑鄙
可以加MSN讨论下电子商务,或者购物车的内容么,上次看你讨论得蛮激烈的!
--------------------------------------------------------
邮件和msn都是 blackshaman_wayne@hotmail.com
T_T 公司不能开msn
邮件的话过几天可能能用
不能上MSN,那算咯!问个问题,在电子商务网站中,如果一个月前的订单一个月后来付款,是应该付现在的价格,还是应该付一个月前的价格,领导和我说要为用户着想,下订单什么价,就付什么价,但是那财务那块就会乱了,价格随时会变的!
--引用--------------------------------------------------
HarborHouse: <p><img src="https://i-blog.csdnimg.cn/blog_migrate/c6e6622dfee4e05c456d08a19d65e009.gif" alt="" /> 不能上MSN,那算咯!问个问题,在电子商务网站中,如果一个月前的订单一个月后来付款,是应该付现在的价格,还是应该付一个月前的价格,领导和我说要为用户着想,下订单什么价,就付什么价,但是那财务那块就会乱了,价格随时会变的!</p>
--------------------------------------------------------
你们领导说的是对的。你可想象一下房贷。
HarborHouse: <p><img src="https://i-blog.csdnimg.cn/blog_migrate/c6e6622dfee4e05c456d08a19d65e009.gif" alt="" /> 不能上MSN,那算咯!问个问题,在电子商务网站中,如果一个月前的订单一个月后来付款,是应该付现在的价格,还是应该付一个月前的价格,领导和我说要为用户着想,下订单什么价,就付什么价,但是那财务那块就会乱了,价格随时会变的!</p>
--------------------------------------------------------
你们领导说的是对的。你可想象一下房贷。
一般这种情况 领导说啥就是啥 财务也得买老板帐啊
把成交日期计算成下单当日 然后流程标记为欠款或分期付款 财务就不会说什么了
但是 要为用户着想 万一要是降价了 也要提醒用户 要不要放弃原来的价格的订单 所以就会变成退货流程了
问题出在领导和财务之间 你是受害者 还是找个机会拉他们出来打架 你看热闹比较好
咱们别在这里交流了 欺负人家amingo
把成交日期计算成下单当日 然后流程标记为欠款或分期付款 财务就不会说什么了
但是 要为用户着想 万一要是降价了 也要提醒用户 要不要放弃原来的价格的订单 所以就会变成退货流程了
问题出在领导和财务之间 你是受害者 还是找个机会拉他们出来打架 你看热闹比较好
咱们别在这里交流了 欺负人家amingo
--引用--------------------------------------------------
HarborHouse: <p><img src="https://i-blog.csdnimg.cn/blog_migrate/c6e6622dfee4e05c456d08a19d65e009.gif" alt="" /> 不能上MSN,那算咯!问个问题,在电子商务网站中,如果一个月前的订单一个月后来付款,是应该付现在的价格,还是应该付一个月前的价格,领导和我说要为用户着想,下订单什么价,就付什么价,但是那财务那块就会乱了,价格随时会变的!</p>
--------------------------------------------------------
问题的关键在于,用户是什么时候拿到商品,应该是按拿到商品时的价钱。
HarborHouse: <p><img src="https://i-blog.csdnimg.cn/blog_migrate/c6e6622dfee4e05c456d08a19d65e009.gif" alt="" /> 不能上MSN,那算咯!问个问题,在电子商务网站中,如果一个月前的订单一个月后来付款,是应该付现在的价格,还是应该付一个月前的价格,领导和我说要为用户着想,下订单什么价,就付什么价,但是那财务那块就会乱了,价格随时会变的!</p>
--------------------------------------------------------
问题的关键在于,用户是什么时候拿到商品,应该是按拿到商品时的价钱。
问题的关键在于,用户是什么时候拿到商品,应该是按拿到商品时的价钱。
--------------------------------------------------------
按照合同来说 合同是订单 规定了双方的权利和义务 下单的时候的价格是哪个应该没错。
涨价了或者降价了这种情况 在完成双方该规定义务前 是可以通过协商的方式来撤回合同的, (这里包括退款和退货 )。 但是任何一方都有权利拒绝撤回和修改。
这老板很仁义 对自己要求高 就算涨价了也要按照下单时间的价格发货。这是为客户着想,
咱们可以提醒下 物品降价了用户可以协商重新定价也是这一范畴的仁义哈哈
貌似location.reload(true)可以做到不提交刷新
--引用--------------------------------------------------
zjfeiye: 貌似location.reload(true)可以做到不提交刷新
--------------------------------------------------------
我试了,还是会提交。
zjfeiye: 貌似location.reload(true)可以做到不提交刷新
--------------------------------------------------------
我试了,还是会提交。
这段话太好了:
“每个人都会经过这个阶段,见到一座山,就想知道山后面是什么。我很想告诉他,可能翻过山后面,你会发现没什么特别。回望之下,可能会觉得这一边更好。 每个人都会坚持自己的信念,在别人看来,是浪费时间,她却觉得很重要。”
“每个人都会经过这个阶段,见到一座山,就想知道山后面是什么。我很想告诉他,可能翻过山后面,你会发现没什么特别。回望之下,可能会觉得这一边更好。 每个人都会坚持自己的信念,在别人看来,是浪费时间,她却觉得很重要。”
--引用--------------------------------------------------
amingo: --引用--------------------------------------------------
痴情客: location.reload()不是要你用来刷新的吗?弄这旁门左道?
--------------------------------------------------------
我之前就说了刷页面就很多方法,但location.reload()和
window.location.href = window.location.href 这有区别的!
区别在于:
如果在reload之前想服务器提交过数据,那么执行reload会重新执行这个提交操作。
而window.location.href = window.location.href 则不会,因为它是重新进入页面。
--------------------------------------------------------
其实reload也有一个重载参数,就是可以带入一个布尔值,好像设置一下就可以解决这个问题。
amingo: --引用--------------------------------------------------
痴情客: location.reload()不是要你用来刷新的吗?弄这旁门左道?
--------------------------------------------------------
我之前就说了刷页面就很多方法,但location.reload()和
window.location.href = window.location.href 这有区别的!
区别在于:
如果在reload之前想服务器提交过数据,那么执行reload会重新执行这个提交操作。
而window.location.href = window.location.href 则不会,因为它是重新进入页面。
--------------------------------------------------------
其实reload也有一个重载参数,就是可以带入一个布尔值,好像设置一下就可以解决这个问题。
但就刷新来说reload比较好,而且有参数可以设
虽然问题本身是个很简单的问题,但是看了大爱的讨论还是学到不少啊,尤其是:
[quote]
直接window.location.href=window.location.pathname不就完了嘛!如果有参数的话 window.location.href=window.location.pathname+window.location.search
[/quote]
之前好像都没有这样用过啊 JS的功能还真是丰富啊……
[quote]
直接window.location.href=window.location.pathname不就完了嘛!如果有参数的话 window.location.href=window.location.pathname+window.location.search
[/quote]
之前好像都没有这样用过啊 JS的功能还真是丰富啊……
warning!
warning!
warning!
warning!
reload(true,false) 都会引发重复提交!
aspx
<input id="Button2" type="button" value="reload(false)" οnclick="window.location.reload(false);" />
<input id="Button4" type="button" value="reload(true)" οnclick="window.location.reload(true);" />
<input id="Button3" type="button" value="href" οnclick="window.location.href= window.location.href;" />
<asp:Button ID="Button1" runat="server" Text="刷新前先点我" OnClick="Button1_Click" />
cs:
protected void Button1_Click(object sender, EventArgs e)
{
string s = string.Empty; //断点
}
warning!
warning!
warning!
reload(true,false) 都会引发重复提交!
aspx
<input id="Button2" type="button" value="reload(false)" οnclick="window.location.reload(false);" />
<input id="Button4" type="button" value="reload(true)" οnclick="window.location.reload(true);" />
<input id="Button3" type="button" value="href" οnclick="window.location.href= window.location.href;" />
<asp:Button ID="Button1" runat="server" Text="刷新前先点我" OnClick="Button1_Click" />
cs:
protected void Button1_Click(object sender, EventArgs e)
{
string s = string.Empty; //断点
}