【发布时间】:2009-05-17 12:12:20
【问题描述】:
如何只将页面的 HTML 加载到 IFRAME 中,而不自动触发页面上所有 css、脚本、图像、视频的下载?
或者你能不能在 DOM “准备好”的那一刻得到一个事件......当初始 HTML 已经加载时,仅此而已。
【问题讨论】:
标签: javascript html dom iframe
如何只将页面的 HTML 加载到 IFRAME 中,而不自动触发页面上所有 css、脚本、图像、视频的下载?
或者你能不能在 DOM “准备好”的那一刻得到一个事件......当初始 HTML 已经加载时,仅此而已。
【问题讨论】:
标签: javascript html dom iframe
要仅获取 HTML 内容,请尝试使用 AJAX 调用。当然,这会在变量中返回内容,但您可以在之后按照您认为合适的方式对其进行处理。
【讨论】:
没有跨浏览器的方法可以做到这一点。一些浏览器提供了在 DOM 加载时触发的事件,例如 Gecko 的 DOMContentLoaded。
jQuery implements this functionality。我建议您为此使用 jQuery:
$(document).ready(function () {
// Function is called when the DOM is loaded.
});
或者查看 jQuery 是如何实现它的。请参阅jQuery source code 中的bindReady 函数。
【讨论】:
简短的回答是“你不能”。
Internet Explorer 支持 propriatry attribute which can prevent scripts 执行,但它不是跨浏览器,也不处理图像或样式表。
许多 JS 库实现了一个自定义事件,当 the DOM is ready 时触发 - 但浏览器并行加载资源,因此虽然该事件可能在所有图像和样式表加载之前触发,但不太可能在其他元素开始之前触发下载。
如果您真的希望页面在没有这些东西的情况下加载 - 在服务器上对其进行处理以去除包含它们的 HTML。
【讨论】:
将该 HTML 页面的“内容类型”设置为 text/plain。
【讨论】: