如何添加直到以后才解析的HTML元素?

时间:2010-12-01 17:53:16

标签: javascript jquery html ajax dom

我正在创建一个网页,并希望在加载其余部分之前显示预加载器。我只希望浏览器解析我的第一个<head>标记,其余部分将被忽略。这将是理想的:

<head>  
  <script src='preloader.js'></script>  
  <script src='more1.js' ignore='true'></script>  
  <script src='more2.js' ignore='true'></script>  
  <script src='more3.js' ignore='true'></script>  
</head>

这让我想知道如何在我的页面上创建现有的潜在HTML标签,我稍后会通过JavaScript标记它们来激活它们,就像取消注释它们一样。我认为注释代码将是答案,但我无法从jQuery的DOM中读取我的HTML注释。

如何创建稍后激活的潜在HTML?

我不希望:
  - 拥有有效的HTML   - 注入驻留在自己文件之外的HTML内容(更改内容,就像属性一样)   - 取消隐藏任何已经解析过的内容。

3 个答案:

答案 0 :(得分:2)

您需要澄清一点:您是否希望HTML不被解析或不被显示?

如果您不希望对其进行解析,请将其插入脚本元素中的JavaScript字符串中:

<script type="text/javascript">
/* <![CDATA[ */

var yourHTML = '<div id="whatever">...</div>';

/* ]]> */
</script>

如果您不希望它显示,请在内嵌样式上设置display:none(这样可以防止css可能出现的任何问题):

<div id="whatever" style="display: none;">...</div>

在任何一种情况下,您都可以稍后使用$(yourHTML)$('#whatever')使用jQuery访问该节点。

答案 1 :(得分:0)

一种选择是使用javascript将内容添加到dom中。

由于你使用的是jquery,你可以这样做:

var aThingToAddLater = $('<div class="myNewDiv">div content</div>');

$("body").append(aThingToAddLater); // <-- this will add it to the dom, specifically as the last element of the body

这样,实际的'未解析的直到晚'内容将是javascript代码。

答案 2 :(得分:0)

首先,如果您的网页需要预加载器,我认为您做得不对。但话说回来,我不知道整个上下文,并且可能存在可以证明预加载器合理的情况。

您是否尝试过将display设置为none,然后在页面准备好后显示代码? E.g。

<div class="preloader">...</div>
<div class="main" style="display: none">...</div>

<script type="text/javascript">
    $(document).ready(function() {
        $(".main").show();
    });
</script>

如果您希望这项工作正确,您可能还需要在发送preloader-div后刷新Web服务器的输出缓冲区。在PHP中它看起来像这样:

<div class="preloader">...</div>
<?php
    flush();
?>
...