2010-10-09 20 views
3

Nous avons rencontré un comportement étrange lors de l'utilisation de la balise html. En fait, le problème était dû à une mauvaise utilisation de l'étiquette. À la suite de cela, la page a été soumise 3 fois dans Mozilla Firefox et 2 fois dans IE7. Voici le problème.Comportement étrange du tag de lien HTML

<link rel="stylesheet" type="text/css" title="Style" href=''/css/image.css'> 

Ceci était le code que nous utilisions dans l'une de nos applications J2EE. Lorsque nous avons inspecté la requête et la réponse (à l'aide de HTTP Watch), nous avons découvert que la page avait été demandée 3 fois par le serveur. Nous avons découvert que le supplément "citation" après href= est à l'origine du problème. Nous n'avons pas pu trouver la raison pour laquelle cela provoquait plusieurs soumissions de pages. Est-ce parce que, la citation supplémentaire rend le href vide et à cause de ce navigateur essaie de charger le styleclass à partir de la même URL qui a chargé la page? Quelqu'un peut-il s'il vous plaît aider à trouver la raison pour laquelle cela se produit? Toute aide est la bienvenue.

+0

+ 1 problème intéressant. – Marko

+0

C'est ce qu'on appelle un "élément", pas une étiquette. Une citation correcte (c.-à-d. L'utilisation de '' '' au lieu de deux apostrophes) corrigera le problème – You

+0

La citation correcte a résolu le problème, mais je suis plus intéressé de découvrir pourquoi le guillemet simple supplémentaire cause le problème :) – Jish

Répondre

0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
    <head>   
    </head> 
    <body> 
     <table width="100%" cellspacing="0" cellpadding="0" border="0" class="mainOutterTable"> 
      <tbody> 
       <tr> 
        <td> 
         <table class="layoutColumn" cellpadding="0" cellspacing="0"> 
          <tr> 
           <td style="width:100%;" valign="top"> 
            <table class="layoutRow" cellpadding="0" cellspacing="0"> 
             <tr> 
              <td valign="top" width="910"> 
               <table class="layoutColumn" cellpadding="0" cellspacing="0"> 
                <tr> 
                 <td style="width:100%;" valign="top"> 
                  <table class="layoutRow" cellpadding="0" cellspacing="0"> 
                   <tr> 
                    <td valign="top" width="294"> 
                     <table class="layoutColumn" cellpadding="0" cellspacing="0"> 
                      <tr> 
                       <td style="width:100%;" valign="top"> 
                        <a name="7_N1K8HIC0GOO780I2B1KASD3047"></a> 
                        <div class="wpsPortletBody"> 
                         This is a sample textf 3. 
                         <link rel="stylesheet" type="text/css" title="Style" href=''/> 
                        </div> 
                       </td> 
                      </tr> 
                     </table> 
                    </td> 
                   </tr> 
                  </table> 
                 </td> 
                </tr> 
               </table> 
              </td> 
             </tr> 
            </table> 
           </td> 
          </tr> 
         </table> 
        </td> 
       </tr> 
      </tbody> 
     </table> 
    </body> 
</html> 

j'ai pu reproduire le problème sur une page de test. Ceci est mentionné dans la section 5.2 de http://www.apps.ietf.org/rfc/rfc3986.html#sec-5.2 Si le chemin relatif est vide, l'URI cible est le chemin de base. if (R.path == "") puis T.path = Base.path;

1

cette explication provient de this article on Yahoo Developer site. Section Évitez vide Image src:

When an empty string is encountered as a URI, it is considered a relative URI and is resolved according to the algorithm defined in section 5.2. This specific example, an empty string, is listed in section 5.4.

Bien qu'il ne sait toujours pas si ce comportement affecte href ou non (l'article concerne principalement le vide src). Mais semble comme il le fait:

Hopefully, browsers will not have this problem in the future. Unfortunately, there is no such clause for <script src=""> and <link href="">. Maybe there is still time to make that adjustment to ensure browsers don't accidentally implement this behavior.

Note: Je ne rencontre jamais un tel comportement de sorte qu'il est juste réponse théorique :)