首页 > 解决方案 > 使用 Javascript 更改 iframe src 导致整个页面刷新

问题描述

我多年来一直使用堆栈溢出,并且从未遇到过我找不到解决方案的问题。然而,我完全被困住了,所以我实际上注册了发布这个问题。

我有一个包含几个不同 iframe 的索引页面。每个 iframe 的内容有时可以动态更改在其他 iframe 中显示的页面。我所有的 javascript 都在索引级别,所以我在 iframe 中的调用是对父级的,以更改另一个 iframe 的 src。

我从一些用户那里得到反馈,当他们单击更改其他 iframe 之一的链接/按钮时,它会重置整个页面,就像他们点击刷新按钮并从页面开头重新开始一样。我自己从来没有能够重现这个问题,但是拥有它的用户始终如一地得到它。我已经与他们进行了远程会话,他们没有做任何不同的事情,但正在经历页面刷新行为。我正在使用 Chrome,遇到问题的用户使用的是相同版本的 Chrome,但我让其中一个人说,当他们使用 Firefox 时,问题不会发生。

这是索引页面上的框架示例

<iframe id="frmStopTime" src="stop_times_blank.html"></iframe>
<iframe id="frmTimetable" src="timetable.html"></iframe>

这是时间表页面上的电话。

<a href="#" onclick="return parent.openStopTime('18399922', '5');event.preventDefault();"> 5:36</a>

这是javascript函数。

function openStopTime(whichTrip, whichStopTimePoint) {

document.getElementById("frmStopTime").contentWindow.location.assign("../../../" + strEnvironment + "/stop_times/" + whichTrip + ".xml")
changeFocus('StopTime');

return false;
}

我已经尝试将时间表页面标记更改为 span 而不是 href,我已经在 preventDefault() 中添加了我不必开始的内容。我尝试在函数中添加 return 和 return false,因为我发现了说这可能是一个问题的地方。我的 javascript 最初document.getElementById("frmStopTime").src = parent.strEnvironment + "/stop_times/" + tripID + ".xml";是我更改的,只是因为我不知道还能尝试什么。这些都不是一种方式或另一种方式。

所有这些变化对我来说都没有什么不同,而且它一直都能正常工作,在正确的时间加载正确的页面而无需重置页面。

如果碰巧有任何不同,加载的框架中的大部分内容都是带有 xsl 样式表的 xml 数据。

我不是专业的开发人员,我的代码可能不符合当前的标准或最佳实践,但据我所知它是有效的。任何想法将不胜感激。谢谢。

标签: javascripthtmliframe

解决方案


推荐阅读