webForumDet fria alternativet

Javascripmeny i sökmotorer

Webbutveckling

3 svar · 268 visningar · startad av jockooono

Medlem sedan mars 200561 inlägg
Frågan#1

Undar lite hur sökmotorerna hanterar javascript. Jag har en sida med en javascriptmeny,
kan en sökmotor följa dessa länkar?
Om inte finns det något sätt att lösa det på så att sökmotorerna även indexerar alla mina undersidor och inte bara förstasidan?

Medlem sedan dec. 20042 245 inlägg
#2

Sökmotorer utför inte javascript. Om du själv inte kan följa dina länkar utan javascript kan inte sökmotorer det heller.

Du kan använda en vanlig lista för din meny, till exempel:

<ul>
 <li><a href="/1/">1</a>
  <ul>
   <li><a href="/1/1/">1.1</a></li>
  </ul>
 </li>
 <li><a href="/2/">2</a></li>
</ul>

...och sen använda javascript för att lägga till beteende. På så vis fungerar menyn även utan js och sökmotorer hittar dina länkar. :)

Medlem sedan mars 200561 inlägg
#3

Ok, tyvärr är inte menyn uppbyggd som en lista. Så det är lite bökigt att göra om hela menyn. Men det kanske går att göra en noscript-tag och lägga länkarna i, är det ett bra alternativ?

Medlem sedan dec. 20042 245 inlägg
#4

Tja, det är förstås bättre än ingenting eftersom sökmotorer kan hitta länkarna, men jag skulle inte säga att det är ett bra alternativ. :)

NOSCRIPT är i min mening dålig på många sätt.

  1. Webbläsaren kan inte veta vilket skript det ska ersätta. Ta följande HTML-fragment:

    <script type="application/javascript" src="foo"></script>
    <script type="text/JScript" src="bar"></script>
    <script type="application/x-unknown" src="baz"></script>
    <noscript><p>...noscript...</p></noscript>
    

    När ska innehållet i NOSCRIPT visas? Specen säger att NOSCRIPT bör visas om webbläsaren saknar stöd för ett skriptspråk som använts i ett SCRIPT-element tidigare i dokumentet. I verkligheten (IE, Firefox, Opera) visas NOSCRIPT bara när skript är inaktiverat i webbläsaren.

  2. Webbläsaren kan inte veta om skriptet körts korrekt. Ta följande HTML-fragment:

    <script type="text/javascript">
     window.addEventListener("load", function(){
      alert("PASS");
     }, false);
    </script>
    <noscript><p>...noscript...</p></noscript>
    

    IE har stöd för text/javascript, så av den anledningen borde den inte visa NOSCRIPT. Men den saknar stöd för addEventListener, vilket gör att skriptet inte körs korrekt. Därför visas varken innehållet som skriptet ger eller innehållet i NOSCRIPT.

Det är bättre att låta "noscript" vara rent innehåll i dokumentet från början, och ersätta det genom skript. På så sätt kan man kolla om skriptet stöds och om det körs korrekt, innan man gömmer undan väsentlig information. :) Om vi tar mitt andra exempel så kunde det se ut såhär istället:

<script type="text/javascript">
 if (window.addEventListener)
  window.addEventListener("load", function(){
   var elm = document.getElementsByTagName("p")[0];
   elm.parentNode.removeChild(elm);
   alert("PASS");
  }, false);
</script>
<p>...noscript...</p>
263 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)