在IE

2009-11-02 112 views
1

我是一個老師在網站上工作的JavaScript文件的外部參考, 既然有機會,她可能要添加更多的後來,我決定把出現在每個頁面上的寫在鏈接Javascript,以便所有頁面可以快速更改。在IE

的HTML代碼有這樣一個外部參考:

<script type="text/javascript" language="javascript" src="links.js"></script> 

的JavaScript看起來像這樣:

document.write(<div id="wrapper"> 
<div id="header"> 
<ul> 
<li><a href="home.html">Home </a></li> 
<li><a href="catering-home.html">Catering </a></li> 
<li><a href="prostart-home.html">ProStart </a></li> 
<li><a href="recipes.html">Recipes</a></li> 
</ul> 
</div> 
</div>) 

這種負荷完全在Firefox中,但頁面的部分由JavaScript寫成在IE中不加載。它是如何寫入代碼或阻止IE加載它的引用?

+1

這是怎麼回事「容易」,以改變鏈接?更改HTML比改變動態寫入HTML的JavaScript更容易。這是一個壞的設計,不應該被允許。 (我的合作伙伴和我花了將近一年的時間清理代碼,其中asp寫出了寫出HTML的javascript)。請重新考慮 – David 2009-11-02 17:15:14

+0

確實如此。正如我在答覆中提到下方,這麼做的原因之一,如果JavaScript的來自外部域,雖然「links.js」表明它沒有這將是。 – mahemoff 2009-11-02 17:21:01

+1

我有一個困難時期「在Firefox完美負荷」相信這一點。 – 2009-11-02 17:21:16

回答

1

您的報價均不正確轉義。試試這樣:

document.write("<div id=\"wrapper\"><div id=\"header\"><ul><li><a href=\"home.html\">Home </a></li><li><a href=\"catering-home.html\">Catering </a></li><li><a href=\"prostart-home.html\">ProStart </a></li><li><a href=\"recipes.html\">Recipes</a></li></ul></div></div>"); 
2

您需要周圍的引號是這樣的:

document.write('<div id="wrapper">'+ 
'<div id="header">'+ 
'<ul>'+ 
'<li><a href="home.html">Home </a></li>' + 
'<li><a href="catering-home.html">Catering </a></li>' + 
'<li><a href="prostart-home.html">ProStart </a></li>' + 
'<li><a href="recipes.html">Recipes</a></li>' + 
'</ul>' + 
'</div>' + 
'</div>'); 

然而,這將是一個更加簡潔,如果它是在HTML文件中只輸出。我猜如果Javascript是在老師的控制下來自外部域的話,那就是這樣做的一個原因。

+0

我給你一個專門針對答案的「然而」部分的+1。從技術上講,答案的其餘部分也很好。我不認爲應該鼓勵@Garrett遵循這個過程。 – David 2009-11-02 17:27:23

1

把鏈接在一個單獨的HTML文件,它包含的所有網頁上。所有主要的Web服務器都支持這一點例如:

  • 如果你有PHP,它會可能是<?php include('links.html'); ?>
  • 如果你有Apache的,它可能是<!--#include virtual="/links.html" -->
+0

或者您可以將其包含在AJAX調用中。 jQuery使它非常容易。 – friedo 2009-11-02 19:25:16

+0

不適合搜索引擎優化或屏幕閱讀器,但。 – ceejayoz 2009-11-02 20:41:22

0

我建議做數組,你保持聯繫,然後它可以被放置到像一個函數:

var links=[ 
    ['home.html','Home'], 
    ['catering-home.html','Catering'], 
    ['prostart-home.html','Prostart'], 
    ['recipes.html','Recipes'] 
    ]; 

document.write('<div id="wrapper"> 
<div id="header">; 
<ul>'); 
    var items=links.length; 
    for(var i=0;i<items;i++){ 
    document.write('<li><a href="'+links[i][0]+'">'+links[i][1]+'</a></li>'); 
    } 
document.write('</ul> 
</div> 
</div>'); 

這將使像PHP服務器端代碼更有意義不是JavaScript,真的和做法是ABO一樣。這種風格是製作一個從數據庫中讀取項目的站點,然後用類似這樣的函數打印出來的一個很好的步驟。