Javascript重新加载页面

为了重新加载页面没有完全重新加载我正在使用的一切:

window.top.location=window.top.location; 

但是,当有锚文本时,这不起作用。 在这种情况下,它似乎什么也不做,但更有可能刷新主播。

任何修复这将重新加载页面(如上)而不重新加载caching的图像和脚本?

尝试使用location.reload(false)

正如MDN所说 ,第二个参数是一个指示是否绕过caching的布尔值。 如您所愿, false将继续使用caching。

icktoofay解释了解决方法,所以我只是解决这个问题:

但是,当有锚文本时,这不起作用。 在这种情况下,它似乎什么也不做,但更有可能刷新主播。

HTML 5描述了包含document.location赋值的Location接口 。

当调用assign(url)方法时,UA必须parsing相对于条目脚本的基本URL的参数,如果成功,则必须将浏览上下文导航到指定的url。

所以导航操作只能看到一个绝对的URL,所以没有什么区别只是分配一个片段,而不是分配一个绝对的URL,这个URL和一个片段一样。

导航

8片段标识符:将URLparsing器algorithm应用于新资源的绝对URL和正在浏览的浏览上下文的活动文档的地址。 如果结果parsingURL的所有组件(忽略任何片段组件)都是相同的 ,并且新资源将使用HTTP GET或等效方法获取,并且新资源的parsingURL具有非空的片段组件如果它是空的), 然后导航到该片段标识符并放弃这些步骤。

最后, 导航到一个片段标识符说

当用户代理需要滚动到片段标识符时,它必须使用CSSOM视图规范中定义的查看algorithm,使用scroll元素更改文档的滚动位置,并设置align to top标志或执行其他操作动作,使得文档的指示部分引起用户的注意。

要完全确定页面本身的最好方法是重新加载,但其他caching的元素不是用随机参数更改location.search查询string。

例如,

 location.search='?'+Math.random(); 

caching不被绕过,所以页面的所有元素都将从caching中加载,但是主页面本身被迫重新加载,因为HTTP需要对服务器的每个唯一查询string/ location.search值进行另一个请求。

如果你的页面本身就是一个使用查询string的应用程序(比如file.cgi?param = xyz&param2 = abc …),那么你将不得不附加到查询string,而不是完全replace它:

 if (location.search.length > 1) location.search+='&'+Math.random(); else location.search='?'+Math.random(); 

我一直在尝试所有这些为了以下情况:我有一个复杂的页面,有一个小客户,客户可以用产品列表保存项目。 现在,我想让客户打开一个新的页面来下载报告,同时保持与开放式手风琴等完整的父页面。

IE8仍然运行XP的客户打开报告窗口后,父页面会出现乱码。 编程是在ASP.NET后面的VB代码。 这个解决scheme为我工作。

 Dim proj As String = "<script language=javascript> location.assign('/Projects.aspx'); window.open('Report.aspx?project=" & projid.Text & "&rpt=bill');</script>" Session.Add("AddCart", idx.ToString("N0")) Response.Write(proj) 

location.assign用于刷新父页面,而window.open将在新窗口中打开报表。

会话variables用于跟踪应该打开哪个手风琴行。 这是在Page_Load中处理的

  If Not Page.IsPostBack Then LoadProjects() If Session("AddCart") IsNot Nothing Then Dim idx As Integer = Session("AddCart") ProjAccordion.SelectedIndex = idx Session.Remove("AddCart") ElseIf Session("CopyProj") IsNot Nothing Then Dim idx As Integer = Session("CopyProj") ProjAccordion.SelectedIndex = idx Session.Remove("CopyProj") End If End If