【问题标题】:Only load HTML into an IFRAME仅将 HTML 加载到 IFRAME
【发布时间】:2009-05-17 12:12:20
【问题描述】:

如何只将页面的 HTML 加载到 IFRAME 中,而不自动触发页面上所有 css、脚本、图像、视频的下载?

或者你能不能在 DOM “准备好”的那一刻得到一个事件......当初始 HTML 已经加载时,仅此而已。

【问题讨论】:

    标签: javascript html dom iframe


    【解决方案1】:

    要仅获取 HTML 内容,请尝试使用 AJAX 调用。当然,这会在变量中返回内容,但您可以在之后按照您认为合适的方式对其进行处理。

    【讨论】:

      【解决方案2】:

      没有跨浏览器的方法可以做到这一点。一些浏览器提供了在 DOM 加载时触发的事件,例如 Gecko 的 DOMContentLoaded

      jQuery implements this functionality。我建议您为此使用 jQuery:

      $(document).ready(function () {
        // Function is called when the DOM is loaded.
      });
      

      或者查看 jQuery 是如何实现它的。请参阅jQuery source code 中的bindReady 函数。

      【讨论】:

      • +1 我正要建议使用 domFunction brothercake.com/site/resources/scripts/domready 或 jQuery 等 JavaScript 框架。
      • 顺便说一句,你的语法不正确:应该是 $(document).ready(function() { // 加载 DOM 时调用函数。});甚至更好: $(function() { // 加载 DOM 时调用函数。});
      • @Mathias 确实,我忘记了右括号。现在修好了。谢谢。
      【解决方案3】:

      简短的回答是“你不能”。

      Internet Explorer 支持 propriatry attribute which can prevent scripts 执行,但它不是跨浏览器,也不处理图像或样式表。

      许多 JS 库实现了一个自定义事件,当 the DOM is ready 时触发 - 但浏览器并行加载资源,因此虽然该事件可能在所有图像和样式表加载之前触发,但不太可能在其他元素开始之前触发下载。

      如果您真的希望页面在没有这些东西的情况下加载 - 在服务器上对其进行处理以去除包含它们的 HTML。

      【讨论】:

        【解决方案4】:

        将该 HTML 页面的“内容类型”设置为 text/plain。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-08-26
          • 1970-01-01
          • 1970-01-01
          • 2011-05-27
          • 2016-07-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多