本文将为您提供关于开启-window.location.hash-更改了吗?的详细介绍,我们还将为您解释windowlocationhash的相关知识,同时,我们还将为您提供关于asp.net–win
本文将为您提供关于开启-window.location.hash-更改了吗?的详细介绍,我们还将为您解释window location hash的相关知识,同时,我们还将为您提供关于asp.net – window.location更改失败AJAX调用、IE6 / 7后退/前进按钮不更改window.location.hash、JavaScript 中的 window.location 和 document.location 有什么区别?、Javascript-将ID添加到同一页面上url的末尾时,window.location.href和window.location.replace不起作用的实用信息。
本文目录一览:- 开启-window.location.hash-更改了吗?(window location hash)
- asp.net – window.location更改失败AJAX调用
- IE6 / 7后退/前进按钮不更改window.location.hash
- JavaScript 中的 window.location 和 document.location 有什么区别?
- Javascript-将ID添加到同一页面上url的末尾时,window.location.href和window.location.replace不起作用
开启-window.location.hash-更改了吗?(window location hash)
我正在使用Ajax和哈希进行导航。
有没有办法检查这种window.location.hash
变化是否?
http://example.com/blah #123
到http://example.com/blah #456
如果我在加载文档时检查它,它将起作用。
但是,如果我具有基于#hash的导航,则在按浏览器上的“后退”按钮时将不起作用(因此我从blah#456跳到blah#123)。
它显示在地址框中,但我无法用JavaScript捕获它。
答案1
小编典典真正做到这一点的唯一方法(以及“reallysimplehistory”的实现方式)是通过设置一个间隔来保持检查当前哈希值,并将其与之前的哈希值进行比较,然后执行此操作,并让订阅者订阅更改后的内容如果哈希发生变化,我们将触发该事件。它并不完美,但浏览器实际上并不原生支持此事件。
更新以使此答案保持最新:
如果您使用的是jQuery(今天对于大多数人来说应该是基础的),那么一个不错的解决方案是使用jQuery通过使用其事件系统侦听window对象上的hashchange事件为您提供的抽象。
$(window).on(''hashchange'', function() { //.. work ..});
这里的好处是,您可以编写甚至不需要担心hashchange支持的代码,但是您确实需要做一些魔术,以一种鲜为人知的jQuery特性jQuery特殊事件的形式。
使用此功能,您基本上可以为任何事件运行一些设置代码,这是有人第一次尝试以任何方式(例如绑定到事件)使用该事件。
在此安装代码中,您可以检查是否支持本机浏览器,如果浏览器不是本机实现的,则可以设置单个计时器以轮询更改并触发jQuery事件。
这完全不需要您的代码来理解这个支持问题,这种特殊事件的实现是微不足道的(获得简单的98%工作版本),但是当别人已经这样做时为什么要这样做。
asp.net – window.location更改失败AJAX调用
不幸的是,我正在使用window.location =“newUrl”来更改页面,这似乎使AJAX调用失败.有没有解决的办法?
我不需要从AJAX调用中获取任何信息,我只需要确保调用WebMethod.
我知道我可以直接重定向success()或failure()调用,但是我必须等待clickTracking()方法运行,这需要~1s.这是项目规范中的协议所不能接受的,因此不是一个可行的解决方案.
解决方法
window.location = "/redirect.aspx?track=true&url=" + encodeURIComponent(newUrl);
然后redirect.aspx将处理跟踪和重定向到新URL.在发送用户之前,这几乎是您无需等待AJAX请求即可完成的唯一方法.
另见:Redirecting Users to Another Page (MSDN)
值得注意的是,您每天都会在许多网站上看到此方法.最常见的是,它们存在于广告中. AdSense广告链接如下所示:
http://www.google.com/aclk ?sa=L&ai=C6DnFKnl1S5zhKoSBjAeqyKzKBPOD_2ehlIXfD9WsvQsQAVDQzK______ 8BYLvOuYPQCsgBAaoEGU_Q8k4OJin9jMDXAD6KQ_2Dsv7xyokLxRY &num=1&ggladgrp=13269254452699041863&gglcreat=8511532373602616220 &sig=AGiWqtwzFm2sTimBuQpkD5kazyRNkkqH3w &q=http://www.amazon.co.uk/s/%3Fie%3DUTF8%26keywords%3Dhello%2Bworld
是啊,无论如何(我把它击倒了一下).当您单击它时,您将在http://www.google.com/aclk登陆,在跟踪点击后会将您重定向到最终站点.
IE6 / 7后退/前进按钮不更改window.location.hash
我有一个使用哈希导航的ajax webapp(JSF 2.0)。
我已在此答案的帮助下使用了事件触发功能,并setInterval()
在较旧的浏览器(主要是IE6 + 7)中检查了值的变化。
执行此操作的Javascript代码:
window.onload = window.onhashchange = function() { lastHash = window.location.hash; // To save a refresh on browsers that don''t need it. var fragment = document.getElementById(''fragment''); fragment.value = window.location.hash; fragment.onchange();}// Old Browsers That don''t support onhashchange...var lastHash = window.location.hash;function checkFragment() { if (window.location.hash != lastHash) { lastHash = window.location.hash; var fragment = document.getElementById(''fragment''); fragment.value = window.location.hash; fragment.onchange(); }}
这很好。意思是,当我更改哈希值时,AJAX应用会获取通知并进行更新。IE
6/7是其中一个无效的实例。当我按下“后退/前进”按钮时,我可以看到URL栏已使用正确的哈希值更新,但windows.location.hash
似乎没有变化,因此我的SetEvent()
功能未检测到变化。
有人找到解决方案了吗?谢谢!
答案1
小编典典考虑使用jQuery Hashchange插件来避免IE6 / 7兼容性问题。您可以在此处找到代码示例。可以根据您的情况进行如下更改。
<script src="jquery.js"></script><script src="jquery-hashchange.js"></script><script> $(function(){ $(window).hashchange(function(){ $(''#fragment'').val(location.hash).change(); }); $(window).hashchange(); });</script>
JavaScript 中的 window.location 和 document.location 有什么区别?
他们都应该引用同一个对象吗?
Javascript-将ID添加到同一页面上url的末尾时,window.location.href和window.location.replace不起作用
如何解决Javascript-将ID添加到同一页面上url的末尾时,window.location.href和window.location.replace不起作用?
我正在创建一个评论表单,该表单发布评论,从服务器接收带有评论ID的响应,然后将用户重定向到评论所在的评论页面。这是我尝试过的:
-
window.location.href =
http://localhost:5000/image/${imgId}#c${res.data.comment_id}
; -
window.location.replace(
http://localhost:5000/image/${imgId}#c${res.data.comment_id}
);
其中imgId是评论部分的ID,而res.data.comment_id是评论本身的ID。
这些都不起作用。当我使用未附加ID的网址(即window.location.href = http://localhost:5000/image/${imgId}
)时,页面会正确加载,尽管它不会自动滚动到我想要的注释。应该注意的是,评论表和评论部分在同一页面上。还应注意,当我从其他页面访问该URL时,它会按预期工作。我也尝试添加以下内容
window.location.reload();
在我给出的两个示例之后,可以正确刷新页面,但不会像我尝试的那样自动将用户重定向到评论。
我还应该提到,当我在另一个位置(即localhost:3000)隔离表单(这是一个React应用)时,页面会正确重定向。由于某种原因,当表单位于应该重定向到的同一页面上时,如果在末尾附加了ID,它就不会重定向。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
今天的关于开启-window.location.hash-更改了吗?和window location hash的分享已经结束,谢谢您的关注,如果想了解更多关于asp.net – window.location更改失败AJAX调用、IE6 / 7后退/前进按钮不更改window.location.hash、JavaScript 中的 window.location 和 document.location 有什么区别?、Javascript-将ID添加到同一页面上url的末尾时,window.location.href和window.location.replace不起作用的相关知识,请在本站进行查询。
本文标签: