3

我发现如果我在页面上使用 AJAX 调用,页面源将保持不变。这可能会导致问题,例如,如果用户在浏览器中使用前进/后退操作,当它返回页面时,浏览器将拥有/读取原始 HTML 代码,而不是具有 AJAX 内容的代码。例如,假设您构建了一个页面

<div id="foo">
<script type="text/javascript">
setTimeout('ajaxFunction', ...);
</script>
</div>

加载页面后,它将调用 ajaxFunction,最终将 div 标签的内容替换为 id="foo"(顺便说一句,它也可以是递归调用)。但是您可以从浏览器查看的页面源代码仍将包含此代码段。有没有办法在不重新加载页面的情况下刷新页面源?

我知道我可以在我的 AJAX 代码中添加页面重新加载,但我想避免它并且不打扰最终用户。

4

3 回答 3

3

浏览器正在向您显示它在 HTTP 响应中从服务器接收到的内容。DOM 中的所有动态变化都不会反映在那里。因此,您可以使用 FF 中的 firebug 或 Chrome 中的开发者工具来跟踪动态变化。

于 2012-09-10T16:04:23.470 回答
1

如果您正在使用右键单击可用的“查看源代码”选项 - 某些浏览器(如果不是全部)正在执行另一个请求以获取 HTML。开发人员工具/Firebug 将向您显示更新的 HTML,但似乎在下一个/前进导航后显示初始 HTML(未使用 JS/AJAX 进行更改)。我认为 chrome 也会缓存动态更改,但只是检查了这一点,它显示了初始页面。假设没有办法改变这种行为。就我而言,这里唯一的方法是调用 ajaxFunctiondocument.onload如果您想确保向用户显示最新信息。

于 2012-09-10T16:15:10.897 回答
0

如果您绝对需要获取已加载的页面源,而无需重新加载或重新提交,我建议您使用这个 Chrome 扩展程序,它在大多数情况下都运行良好。

https://chrome.google.com/webstore/detail/quick-source-viewer/cfmcghennfbpmhemnnfjhkdmnbidpanb

于 2015-11-05T17:55:10.147 回答