Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 强制浏览器将按钮单击视为历史遍历事件时出现问题_Javascript_Browser History - Fatal编程技术网

Javascript 强制浏览器将按钮单击视为历史遍历事件时出现问题

Javascript 强制浏览器将按钮单击视为历史遍历事件时出现问题,javascript,browser-history,Javascript,Browser History,我正在建立一个网站,通过一系列方向按钮导航。右键和左键单击可在与一个项目关联的不同图像之间移动。上下单击在项目之间移动 我试图做的是确保当用户点击向上或向下(即在项目之间)时,这被注册为历史遍历事件,并且新项目的新条目在浏览器的历史记录中可见 我的代码在单击导航按钮时设置一个事件,对页面内容进行必要的更改,然后我尝试通过调用此函数将新页面推送到历史对象(有关背景信息,请参阅和): 在页面加载新内容后,我通过执行以下操作,在其他地方为该函数提供参数: html = document.getElem

我正在建立一个网站,通过一系列方向按钮导航。右键和左键单击可在与一个项目关联的不同图像之间移动。上下单击在项目之间移动

我试图做的是确保当用户点击向上或向下(即在项目之间)时,这被注册为历史遍历事件,并且新项目的新条目在浏览器的历史记录中可见

我的代码在单击导航按钮时设置一个事件,对页面内容进行必要的更改,然后我尝试通过调用此函数将新页面推送到历史对象(有关背景信息,请参阅和):

在页面加载新内容后,我通过执行以下操作,在其他地方为该函数提供参数:

html = document.getElementsByClassName('main-frame')[0].innerHTML
pageTitle = 'http://mysite/'+newpath;    // new path specifieds the new item. 
this.pushToHistory( url, pageTitle, html);
现在我遇到的问题是,所有这些的结果是,在Chrome和Firefox中,历史记录都以一种基本上正确的方式更新:历史记录的状态对象中的url是正确的,这就是内容。因此,如果我单击其中一个历史事件,就会检索到正确的页面

但是,历史记录项目列表中显示的页面标题不正确。它始终是站点初始加载时加载的页面标题。因此,如果我加载mysite/a-project,页面的标题是“我的站点-一个项目”,它总是显示在框中。我还检查了代码以确保pageTitle对象是正确的,因此在调用
history.pushState()
之前转储
pageTitle
,将显示正确的标题


有什么想法吗

我发现了这个问题。我需要先设置
document.title
。这意味着在调用
history.pushState()
之前,我需要执行以下操作:

document.title = theNewTitle;
document.title = theNewTitle;