HTML Firefox не загружается в Firefox - PullRequest
0 голосов
/ 09 января 2011

Я новичок в веб-программировании, но мне нужно сделать домашнюю страницу для колледжа, и я застрял. У меня есть HTML-файл, который загружает страницу .jsp внутри div, используя ajax. У меня есть несколько ссылок, которые загружают разные файлы. Моя проблема в том, что Firefox не отвечает, когда я нажимаю на ссылки (нет сообщений об ошибках или видимых действий). В Internet Explorer, с другой стороны, первая ссылка (Обо мне) работает просто отлично (загружает .jsp внутри div). Моя вторая ссылка (фотографии) должна загружать .jsp, содержащий javascript, и это не работает ни в одном из браузеров. В IE загружается .jsp, но javascript не работает. Я был бы очень признателен за помощь. Вот мой код:

MainPage:

<head>
<title>Titi's HomePage</title>
<link rel="stylesheet" type="text/css" href="homeStyle.css"/>
<script type="text/javascript">
    function loadXMLDoc(file, div)
    {
        if(window.XMLHttpRequest)
        {
            xmlhttp = new XMLHttpRequest();
        }
        else
        {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function()
        {
            if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
            {
                document.getElementById(div).innerHTML = xmlhttp.responseText;
            }
        }
        xmlhttp.open("GET", file, true);
        xmlhttp.send();
    }
</script>
</head>

<body class="body">
<div align="center"><img src="images/header2.jpg" width="1074" height="162" /></div>
<div align="center">
  <table width="1075" height="41" border="1" class="mainTable">
    <tr>
      <th width="215" scope="col"><a href="javascript:loadXMLDoc('http://localhost:8000/HomePage/aboutMe.jsp', 'display');">About Me</a></th>
      <th width="227" scope="col"><a href="javascript:loadXMLDoc('http://localhost:8000/HomePage/Photos.jsp', 'display');">Photos</a></th>
    </tr>
  </table>
  <table class="displayTable">
    <tr>
        <td><div id="display"></td>
    </tr>
  </table>
</div>
</body>

Photos.jsp

<head>
<title>Photos</title>
<SCRIPT language=JavaScript>
theImages = new Array("images/Constanta/c1.jpg", "images/Constanta/c2.jpg", "images/Constanta/c3.jpg","images/Constanta/c4.jpg");
function displayImages() {
for(x in theImages){
    document.write('<img SRC="' +theImages[x]+' " width=80, height =80 onmouseover=addSource(\"'+theImages[x]+'\") onmouseout =removeSource()>');
}
}
function addSource(name){
document.getElementById("biggie").src = name;
var newImg = new Image();
newImg.src = name;
document.getElementById("biggie").height = newImg.height;
document.getElementById("biggie").width = newImg.width;

}
function removeSource(){
document.getElementById("biggie").src = "";
document.getElementById("biggie").height = 0;
document.getElementById("biggie").width =  0;
}
</SCRIPT>
</head>

<body>
<SCRIPT language=JavaScript>
displayImages();
</SCRIPT>
<br/>
<center><img src="" id="biggie" width="0" height="0" align="middle"></center>
</body>

если я загружаю напрямую Photos.jsp, то он отлично работает как с IE, так и с FireFox, но не по ссылкам главной страницы. Что я делаю неправильно?? Имейте в виду, что я совершенно новичок в этом, так что не стесняйтесь учить меня чему-либо: D

Заранее спасибо!

1 Ответ

0 голосов
/ 09 января 2011

Вы должны попробовать использовать что-то вроде этого - но я уверен, что jQuery - лучшее решение

Я изменил код, так что теперь у вас есть то, что вам нужно (например, функция, которую вы предложили).Основной проблемой является функция обратного вызова, потому что вызов ajax является асинхронным (в jQuery есть опция, где это может быть синхронный вызов), и функция возвращает неопределенное значение до завершения вызова ajax.

Теперь в этой функции имя divпередается как параметр функции, поэтому вам не нужен обратный вызов функции.

Этот код проверен на моем компьютере в Firefox 3.6.13

    function isIE(){return/msie/i.test(navigator.userAgent)&&!/opera/i.test(navigator.userAgent);}

function loadXMLDoc(filename, div)
 {
     try
     {
         if (isIE())
         {
             var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
         }
         else
         {
             var xmlhttp = false;
         }
         if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
         {
             try
             {
                 xmlhttp = new XMLHttpRequest();
             }
             catch (e)
             {
                 xmlhttp = false;
             }
         }
         if (!xmlhttp && window.createRequest)
         {
             try
             {
                 xmlhttp = window.createRequest();
             }
             catch (e)
             {
                 xmlhttp = false;
             }
         }
         xmlhttp.open("GET", filename);
         xmlhttp.onreadystatechange = function()
         {
             if (xmlhttp.readyState == 4)
             {
                 document.getElementById(div).innerHTML = xmlhttp.responseText;
             }
         }
         xmlhttp.send(null);
     }
     catch (e)
     {
         alert(e);
     }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...