如何获取常用的大块经常使用的HTML源代码?

时间:2009-07-20 05:04:29

标签: javascript html css

我为其中一个网站项目编写的一系列页面共享了大约144行相同的代码,并在每个文件中重现。如果我更新其中一行,我必须返回共享代码的所有页面并更新每个页面。是否有一种直接的方法来从单独的文件中包含HTML?

对于奖励积分,因为有这么多页面使用这个代码,所以不必为每个页面重新加载它会很好。有没有一种简单的方法可以将它存储在浏览器的缓存中,或者只加载页面的“内容”部分,同时使页面的其余部分保持静态?

感谢您对此有任何了解。

麦克

3 个答案:

答案 0 :(得分:3)

我建议在包含

上阅读this article

答案 1 :(得分:2)

要从单独的文件中包含HTML,请使用SSI(服务器端包含)。但是,这需要在服务器上安装SSI支持。

你会在你的文件中写这样的东西: <!--#include file="included.html" --> 这将包括访问页面时的文件included.html。

要仅加载每个页面的内容,请使用JavaScript中的XMLHTTPRequest对象:

function LoadContent(url)
{
    if (typeof(XMLHttpRequest) == "undefined")
    {
        try
        {
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch(e)
        {
            try
            {
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch(e)
            {
                // fallback for browsers without XMLHttpRequest
                window.location.href = "no-ajax.php?url="+escape(url);
                return;
            }
        }
    }
    else
    {
        xmlhttp = new XMLHttpRequest();
    }
    xmlhttp.open("GET", url, false); // this request will be synchronous (will pause the script)
    xmlhttp.send();
    if(xmlhttp.status > 399) // 1xx, 2xx and 3xx status codes are not errors
    {
        // put error handling here
    }
    document.getElementById("content").innerHTML = xmlhttp.responseText;
}

答案 2 :(得分:1)

如果我们假设您正在谈论直接html页面,没有服务器代码(asp.net,php或服务器端包含能力),那么为了做到这两点包括和缓存,你将需要使用iframe。

每个复制144行内容的网页都应该用iframe替换它:

<iframe src="pagewithcontent.html"></iframe>

pagewithcontent.html显然是您将内容移动到的位置。浏览器将适当地缓存页面,以便每个父页面只需获取共享内容而无需另外请求。

There's an article here深入介绍了html包含,以及一些javascript方法。我强烈建议不要使用javascript方法。

我的回答反映了您无法在服务器端执行任何操作的假设。但是,到目前为止,最好的解决方案是尽可能这样做。