2010-11-18 11 views
5

Mein Projekt basiert auf JavaScript, um Inhalt bei einem Hyperlinkklick dynamisch anzuzeigen. Um es sauber zu machen, ohne JavaScript aktiviert zu haben, zeige ich einfach den gesamten Seiteninhalt an und benutze Hyperlinks und Anker, um die Teile zu verbinden.noscript zum Filtern von Hyperlinks hinzufügen - Sauberes JavaScript abbauen

Ich verlasse mich auf jQuery, um den Klick des Hyperlinks nach ID zu identifizieren, also muss ich ohne JavaScript den Anker hinzufügen.

Ist das eine gute Verwendung von Noscript? Wird der Hyperlink immer ohne JavaScript hinzugefügt?

<div id="link1"> 
    <noscript><a href="#link1content"></noscript> 
    1. Link Name Here 
    <noscript></a></noscript> 
</div> 

Antwort

5

Elemente enthalten andere Elemente, Tags nicht nur. Das Start-Tag und das End-Tag müssen sich im Container befinden. Eine validator hätte dies aufgenommen.

Sie sollten Noscript in erster Linie dafür nicht verwenden. Etwas mehr entlang der Linien von:

<a class="enhanced_in_some_way" href="#link1content">1. Link Name Here</a> 

mit

jQuery('a.enhanced_in_some_way').click(function (event) { 
    var link = this; 
    var name = /#([^#]+$)/.exec(link.href); 
    do_something_with(name); 
    event.preventDefault(); 

}); 

... ist wahrscheinlich der richtige Weg.

0

In vielen Browsern wird dies funktionieren, aber ich würde es nicht empfehlen. Es durchbricht die Struktur des HTML vollständig und es ist nicht garantiert, dass es in allen Browsern oder sogar zukünftigen Versionen von Browsern funktioniert, in denen es jetzt funktioniert.

0

Eigentlich brauchen Sie hier kein noscript. Setzen Sie das Ankerziel standardmäßig in die Hyperlinks und beenden Sie es in Ihrer jQuery- oder JavaScript-Klickfunktion mit return false oder event.preventDefault();. Dadurch wird verhindert, dass die Verknüpfung bei aktiviertem JavaScript ausgeführt wird, und dies führt zu einem nachfolgenden Anker, wenn dieser deaktiviert ist. Sie sind in beide Richtungen mit minimalen Overhead abgedeckt.

Verwandte Themen