3

我的问题类似于这个 如何在没有框架/iframe 的情况下将 HTML 页面包含到另一个 HTML 页面中?

但答案对我不起作用。对象和 iframe 会创建一个带有滚动条的框,这是我不想要的,如果我有指向其他页面的链接,我希望更改整个页面,而不仅仅是框内的内容。

该指令不起作用

<!--#include virtual="/footer.html" -->

我只想使用 html,因为这就是网站的构建方式,我们不会重新设计它。我这样做只是为了修改内容。

在 javascript 文件中编写 html 页眉(或页脚)然后在我的所有 html 文件中包含 .js 是一种不好的做法吗?


第一次编辑

我有大约 70 个不同的 html 静态页面。我想更新标志、菜单、网站的元描述、文本颜色等内容,但目前,我必须对这些修改中的每一个进行 70 次不同的修改。

我将 javascript 用于菜单的 html 部分,因为菜单无论如何都可以使用 javascript,并将该文件包含在我的所有 html 文件中。

function writeJS(){
    var strVar="";
    strVar += "<body bgcolor=\"#000000\">";
    strVar += "<div class=\"Main_container\">";
    ...
    document.write(strVar);
}
writeJS();

例如,我不知道对这些标签做同样的事情是个好主意还是坏主意。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org
/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" ...

第二次编辑

尽管 html/javascript 选项是可行的,但我们还是决定投入几天时间建立一个 wordpress.org 网站(从长远来看更便宜更好)。

4

4 回答 4

1

该指令根本不起作用

<!--#include virtual="/footer.html" -->

...可能是因为未启用 SSI。大概你告诉我们这个是因为你认为它会给你想要的结果——暗示问题的一部分是为什么它不起作用?你做了什么调查?

在 javascript 文件中编写 html 页眉(或页脚)然后在我的所有 html 文件中包含 .js 是一种不好的做法吗?

这不是坏习惯——它不会起作用——你可以从 javascript 注入 html——但你需要 javascript 代码来进行注入。这也与您之前的陈述相矛盾:

我只想使用 html

您提供的代码不会注入它附加的 html。document.write 的问题在于它只写入文档输入流的末尾。如果该流已经关闭,它会重新打开它并清除当前的 HTML。使用 document.write() 从来没有很好的理由。考虑:

<html>
   <div id="header">
     <noscript>....</noscript>
   </div>
   <div id="page_specific_content">
   ...
   </div>
   <div id="footer">
     <noscript>....</noscript>
   </div>
 </html>

和...

 function addHeader()
 {
   var el=document.getElementById("header");
   if (el) {
      el.innerHTML="...";
   }
 }

但这仍然是编写动态网站的不好方法。即使您不想在生产服务器上运行 ASP 或 PHP 或 PERL 或服务器端 JS 或....获取用于发布的静态版本。

于 2013-06-18T15:19:32.400 回答
1

我想可能有很多方法可以做到这一点:

  1. 使用如何在没有框架/iframe 的情况下将 HTML 页面包含到另一个 HTML 页面中的解决方案中所述的 SSI ?
  2. 如果你有 php 或类似的脚本语言并且感觉很舒服,你可以使用它。
  3. 使用 JQuery 或本机 JS 代码使用简单的 js 注入。请参阅:https ://stackoverflow.com/a/676409/2027264
  4. 使用带有一些 CSS 的 IFrame 来摆脱滚动条
  5. 使用 Javascript 模板(下划线、主干和许多其他模板)。另请参阅:您推荐哪些 Javascript 模板引擎?http://en.wikipedia.org/wiki/Javascript_templating

希望这可以帮助。

于 2013-06-18T16:31:28.773 回答
1

是的,这是不好的做法。为正确的工作使用正确的工具。

对于您提到的大多数事情,您需要使用外部样式表(2013 年的 bgcolor?)。这已经使您不必更改 70 个文件。

如果您还希望在页面之间共享内容,那么正确的方法是使用服务器端脚本(例如 php)来包含它。

包括它客户端是混乱的,只能部分工作。您只能加载进入 DOM 的内容(因此不能加载您的元信息或 Head 元素的内容)。另外,当用户没有启用 javascript 时,您的网站将被完全禁用(这几天并不常见,但仍然如此)。

于 2013-06-18T15:25:20.420 回答
1

我相当确定包含解决方案仅适用于服务器端。您是否尝试过该页面上提供的 jQuery 解决方案?它似乎符合您的 javascript 要求:

如果您的意思是客户端,那么您将不得不使用 JavaScript 或框架。简单的开始方式,试试 jQuery

$("#links").load("/Main_Page #jq-p-Getting-Started li");

来源评论。

于 2013-06-18T15:06:08.567 回答