2010-05-11 65 views
3

我想在一个div中调用另一个html页面。从另一个调用另一个html文件

我尝试使用

<include file="NavigationTree.html" /> 

<? include("/starfix/pages/NavigationTree.html"); ?> 

但它不工作。 我做错了什么或者我需要以其他方式做吗?

+1

...“呼叫”?如何,祈祷告诉,你是否这样做? – 2010-05-11 09:58:30

回答

-1

您可以使用iframe为,例如:

<iframe width="500" height="300" frameborder="no" scrolling="no" marginheight="0" marginwidth="0" 
src="http://www.example.com/page.html"></iframe> 
+1

这很方便,但有缺点:它不会与外部文档共享DOM,最重要的是,它不能自动调整大小以适应iframed页面的内容。 – 2010-05-11 10:00:34

6

你可能要考虑使用Server Side Includes(SSI)。

你将使你的HTML代码插入一个单独的文件,如NavigationTree.html,然后你就只需使用引用它在你的网页:

<!--#include virtual="NavigationTree.html" --> 

SSI是由所有流行的Web服务器的支持,包括Apache,IIS和lighttpd。


请注意,如果您使用的是共享主机,您可能需要使用.shtml.stm,或.shtm扩展SSI工作。如果您具有对Web服务器的root访问权限,则可以轻松配置它以为任何扩展程序启用SSI,包括html

+1

+1如果它在具有'.html'扩展名的页面中工作,则这比PHP方法更胜一筹。即使不这样做,最好将'html'文件添加到SSI文件类型列表中,而不是添加到PHP解析的文件类型列表中。 – 2010-05-11 10:12:23

3

这在纯HTML中是不可能的。

前者是我从未见过的符号,它不是HTML,也许它适用于某些特定的服务器端模板语言。

后者是PHP。它应该可以工作,但您需要牢记include()绝对与服务器文件系统内部的路径。

您应指定相对路径:

<? include("./NavigationTree.html"); // will work if it's in the same directory ?> 

或绝对的,可能会是这个样子:

<? include("/path/to/your/www/dir/starfix/pages/NavigationTree.html"); ?> 

(请您向您的Web根目录的绝对路径管理)你可以也可以做一个HTTP包括:

但这是不明智的,因为它往往很慢,并在每个页面请求上生成第二个请求。

您还可以按@Daniel所述使用SSI。

+2

不放*路径*不会*查看当前目录。它会迫使PHP通过include_path寻找包含。通常情况下'.'就在其中,但如果情况并非如此,那么将不会找到include,否则将使用错误的include。最好总是放一个明确的路径,比如'./ NavigationTree.html'。 – 2010-05-11 10:09:35

+0

@Ignacio你是对的。我会添加该信息。 – 2010-05-11 10:10:36

0

你也可以使用jQuery,

例如,

<div id="yourDiv" /> 
<script> 
$("#yourDiv").load("NameOfYourPageToReadFrom.ext #NameOfDivToReadFrom"); 
</script> 

这使内容的“NameOfDivToReadFrom” DIV在文件名为“” NameOfYourPageToReadFrom”到当前文件加载DIV(‘yourDiv’)。

请记住将定义添加到您的html的标题部分。

例如

<head> 
     <script src="https://code.jquery.com/jquery-1.10.2.js"></script> 
</head>