2013-06-18 71 views
3

在HTML HTML我的問題是類似這樣的 How to include an HTML page into another HTML page without frame/iframe?包括通過JavaScript

但答案是不是爲我工作。對象和iframe創建一個帶滾動條的框,我不想要它,如果我有其他頁面的鏈接,我希望整個頁面都改變,而不僅僅是框中的內容。

該指令不起作用

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

我希望只使用HTML,因爲這是怎樣的網站已經建成,我們不會重新設計它。我只是爲了內容修改目的而這樣做。

在JavaScript文件中編寫html標題(或頁腳)然後在所有的html文件中包含.js是否是一種不好的做法?


1日編輯

我有大約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網站(更便宜,在長期更好跑)。

+0

你能詳細闡述一下你目前的狀況,你試圖改變什麼,什麼不工作。 – MickJ

+0

'<! - #include virtual =「/ footer.html」 - >'是[SSI](http://bignosebird.com/ssi.shtml),而不是HTML。 – Quentin

+0

@MickJ我編輯了我的問題 – Catherine

回答

1

此指令不工作的時候

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

...大概becaue未啓用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或....在使用適當的CMS或模板系統進行開發時,也會更有意義,然後再將HTML獲取發佈的靜態版本。

+0

對不起,我沒有意識到這個矛盾。我的意思是我不想使用已經使用的新語言(html和javascript)。我將javascript看作是創建網站附加組件的語言,但是我可能錯了,也許有些網站使用javascript與別人使用PHP的方式不同。我同意這是一個建設不好的網站,但它是由一家不存在的外部公司完成的。這個網站不夠重要,不足以投入大量時間來按照我的意願重建它。 – Catherine

+0

我所擁有的只是幾天的時間,至少讓它看起來不錯(內容和CSS),我正在努力減輕我的工作。我沒有對SSI進行調查,我也不會啓用它,但我暗示這不是對我進行嘗試並理解這不應該起作用的解決方案。我想讓讀者簡短,但我現在正在解釋它......我會嘗試你的解決方案。謝謝 – Catherine

1

我相當肯定,包括解決方案只適用於服務器端。您是否嘗試過在該頁面上提供的jQuery解決方案?它似乎符合你的JavaScript要求:

如果你的意思是客戶端,那麼你將不得不使用JavaScript或框架。 簡單的方式開始,嘗試jQuery的

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

Source comment.

+0

至少屬性原始作者的所有答案:http://stackoverflow.com/a/676409/3791372 – user3791372

+0

我的評論明確指出,代碼來自他鏈接的頁面,我沒有因爲解。 但是,我會更新以包含直接鏈接。 – achillesminor

1

是的,這是不好的做法。使用正確的工具來完成正確的工作。

對於你提到的大多數事情,你需要使用外部樣式表(2013年的bgcolor?)。這將已經阻止你不得不更改70個文件。

如果您還希望在頁面之間共享內容,正確的方法是使用服務器端腳本(如php)來包含它。

包括它客戶端是凌亂的,只會部分工作。你只能加載進入DOM的東西(所以不能加入你的元信息或Head元素的內容)。另外,當用戶沒有啓用javascript時,您的網站將被完全禁用(現在還不常見,但仍然)。

+0

事實上,正如我告訴symcbean,該網站是由一家不存在的外部公司建造的,因此不適合重建它。使用外部CSS,但對於某些元素,每個頁面都寫入樣式。我還問自己關於禁用JavaScript的用戶。哪個更好,這個還是不使用javascript? – Catherine

+0

問題不僅在於成本,還在於未來的可維護性。如果這是一次性的,你可以去做這樣的黑客攻擊(但它仍然是一種黑客行爲,不是很好的做法,這是我想的真正問題)。如果你想在未來保持頁面,最好咬一口,並通過CSS來正確添加樣式。如果您的站點支持php,那麼您可以僅將它用於包含(1行),並忽略其他任何內容。你甚至不會注意到它在那裏。 –

+0

我們決定去wordpress.org網站:) – Catherine

1

我想可能有很多方法可以做到這一點:

  1. 使用SSI作爲How to include an HTML page into another HTML page without frame/iframe?
  2. 在溶液中描述如果您對PHP或類似的腳本語言和感覺舒適,你可以使用它。
  3. 使用簡單的js注入使用JQuery或原生JS代碼。請參閱:https://stackoverflow.com/a/676409/2027264
  4. 使用帶有一些CSS的IFrame去除滾動條
  5. 使用Javascript模板(下劃線,主幹和其他)。另見:What Javascript Template Engines you recommend?http://en.wikipedia.org/wiki/Javascript_templating

希望這會有所幫助。