在IE

2009-11-02 109 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一样。这种风格是制作一个从数据库中读取项目的站点,然后用类似这样的函数打印出来的一个很好的步骤。