GVKun编程网logo

开启-window.location.hash-更改了吗?(window location hash)

20

本文将为您提供关于开启-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)

开启-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调用

asp.net – window.location更改失败AJAX调用

我有一个点击跟踪 AJAX功能(在.aspx页面上调用WebMethod),我需要在用户点击链接时调用它.

不幸的是,我正在使用window.location =“newUrl”来更改页面,这似乎使AJAX调用失败.有没有解决的办法?

我不需要从AJAX调用中获取任何信息,我只需要确保调用WebMethod.

我知道我可以直接重定向success()或failure()调用,但是我必须等待clickTracking()方法运行,这需要~1s.这是项目规范中的协议所不能接受的,因此不是一个可行的解决方案.

解决方法

而不是使用AJAX,为什么不直接将用户发送到记录点击的ASPX页面,然后发送位置标题以重定向到新的URL?例如,在链接点击时,会发生以下情况:

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

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 中的 window.location 和 document.location 有什么区别?

他们都应该引用同一个对象吗?

Javascript-将ID添加到同一页面上url的末尾时,window.location.href和window.location.replace不起作用

Javascript-将ID添加到同一页面上url的末尾时,window.location.href和window.location.replace不起作用

如何解决Javascript-将ID添加到同一页面上url的末尾时,window.location.href和window.location.replace不起作用?

我正在创建一个评论表单,该表单发布评论,从服务器接收带有评论ID的响应,然后将用户重定向到评论所在的评论页面。这是我尝试过的:

  1. window.location.href = http://localhost:5000/image/${imgId}#c${res.data.comment_id};

  2. 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不起作用的相关知识,请在本站进行查询。

本文标签: