Με JavaScript ή χωρίς?

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Με JavaScript ή χωρίς?

Δημοσίευση από skeftomilos » 16 Φεβ 2005 17:03

Παρ'όλο που συχνά το ξεχνάμε, ένα 10% των χρηστών εξακολουθεί να περιηγείται στο web έχοντας απενεργοποιημένη τη JavaScript. Μάλιστα το ποσοστό αντί να μειώνεται δείχνει να αυξάνεται. Πολύ λογικό αν σκεφτεί κανείς τον πανικό που υπάρχει τελευταία με τη security. Αλλά και το υπόλοιπο 90% δεν αποτελείται από ενημερωμένα άτομα που συνειδητά επέλεξαν να ενεργοποιήσουν το scripting στον υπολογιστή τους. Οι περισσότεροι μάλλον δεν έχουν ιδέα ότι υπάρχει κάτι που λέγεται JavaScript, τι κάνει και αν τρώγεται. Απλά συμβαίνει να είναι ενεργοποιημένο το scripting από προεπιλογή σε όλους τους browsers. Ακόμα και όσοι ξέρουν ότι η JavaScript είναι ακίνδυνη για την ασφάλεια του υπολογιστή τους φαντάζομαι ότι πότε-πότε μπαίνουν στον πειρασμό να την απενεργοποιήσουν, ιδίως όταν συναντήσουν την κακή χρήση της στη σελίδα που πρέπει οπωσδήποτε να δούν. Ένα παράδειγμα εδώ, με τη σελίδα να χορεύει πάνω-κάτω, εκτός αν έχει φτιαχτεί. Το συμπέρασμα είναι πως πρέπει να λαμβάνουμε υπόψη μας τους No-JS χρήστες όταν φτιάχνουμε τις σελίδες μας. Περιγράφω μερικούς τρόπους-ιδέες:

Κώδικας: Επιλογή όλων

<script type="text/javascript">
  window.location.replace&#40;"Yes-JS.htm"&#41;
</script>
<noscript>
  <meta http-equiv="Refresh" content="0; url='No-JS.htm'">
</noscript>
Αυτή είναι μία σελίδα χωρίς περιεχόμενο που κάνει το κατάλληλο redirection ανάλογα εάν ο browser επιτρέπει ή όχι scripting. Αυτό σημαίνει ότι πρέπει να έχουμε και να συντηρούμε δύο διαφορετικές εκδοχές της κάθε μιας σελίδας. Εναλλακτικά η σελίδα No-JS.htm μπορεί να περιέχει μόνο μιά ειδοποίηση ότι το site απαιτεί ενεργοποίηση της JavaScript. Ο παραπάνω κώδικας λειτουργεί με client-side redirection, το οποίο είναι αργό και ενοχλητικό για το χρήστη. Μία άλλη μέθοδος είναι να μετακινήσουμε τον έλεγχο στο ίδιο το link που πάτησε ο χρήστης για να έρθει στη σελίδα:

Κώδικας: Επιλογή όλων

<script type="text/javascript">
  document.write&#40;"Καλομοίρα".link&#40;"Yes-JS.htm"&#41;&#41;
</script>
<noscript>
  <a href="No-JS.htm">Καλομοίρα</a>
</noscript>
Αυτό λειτουργεί άψογα, αλλά πρέπει να επαναλαμβάνουμε το ίδιο για κάθε link της σελίδας. Εκτός του ό,τι είναι κουραστικό, θα μεγαλώσει υπερβολικά το μέγεθος της σελίδας. Όμως δε θέλουμε να τιμωρήσουμε τους πολλούς Yes-JS χρήστες με μεγάλο χρόνο downloading για χάρη των λιγοστών No-JS χρηστών!

Κώδικας: Επιλογή όλων

<a href="No-JS.htm" onClick="this.href='Yes-JS.htm'">Καλομοίρα</a>
Αυτό λειτουργεί επίσης αλλά έχει ένα ενοχλητικό πρόβλημα. Εάν ο Yes-JS χρήστης αιωρήσει το mouse πάνω από το link θα δει τη λάθος διεύθυνση στη statusbar. Άρα πρέπει να προσθέσουμε κι άλλο ένα χειριστή συμβάντος: onMouseOver="this.href='Yes-JS.htm'". Ο κώδικας άρχισε πάλι να παχαίνει.

Η μεγάλη πρόκληση όμως είναι να φτιάξουμε έτσι τη σελίδα έτσι ώστε να μπορεί η ίδια να αντιμετωπίσει και τις δύο περιπτώσεις. Εδώ τα πράγματα δυσκολεύουν. Δεν υπάρχει έτοιμη λύση αλλά κάθε περίπτωση θέλει άλλη αντιμετώπιση. Δίνω ένα παράδειγμα με αφορμή τη σελίδα που φτιάχνει ο Radical, η οποία έχει κώδικα της μορφής:

Κώδικας: Επιλογή όλων

<form name="cart">
  <a onClick="document.cart.submit&#40;&#41;">Επιλέξτε</a>
</form>
Η σελίδα δε λειτουργεί για τους No-JS χρήστες. Μία εκδοχή που λειτουργεί είναι η εξής:

Κώδικας: Επιλογή όλων

<form name="cart">
  <script type="text/javascript">
    document.write&#40;"<a onClick='document.cart.submit&#40;&#41;'>Επιλέξτε</a>"&#41;
  </script>
  <noscript>
    <input type="submit" value="Επιλέξτε">
  </noscript>
</form>
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Με JavaScript ή χωρίς?

Δημοσίευση από Rapid-eraser » 16 Φεβ 2005 19:40

les e? ... prosopika twra ksekivsa va grafw ta prota mou script stnv javascript afou sividitopiisa oti mporw va kavw ta panels kai tis efarmoges pou grafo se php pio fancy kai pio leitourgikes.

Pistebw oti o pavikos pou prokiptei me tnv javascript eivai o idios akribos me ta cookies.
Oloi kati exouve akousei alla kavevas dev kserei akribos tnv givete pliv apo aftous pou gvorizouve pragmatika ti givete.
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Με JavaScript ή χωρίς?

Δημοσίευση από ThyClub » 16 Φεβ 2005 19:49

Εγώ απο την άλλη προσπάθησα να βάλω το noscript σε μία σελίδα μου και με Opera νομίζω έκανε και τα δύο.

Δλδ :

Κώδικας: Επιλογή όλων

<script type="text/javascript">
alert&#40;"boo"&#41;;
</script>
<noscript>
BOOOO
</noscript>
Τα έβγαζε και τα 2 :o

Άβαταρ μέλους
EneMe
Super Moderator
Δημοσιεύσεις: 13307
Εγγραφή: 09 Ιούλ 2002 13:29
Τοποθεσία: Στο κέντρο της Ελλάδας!
Επικοινωνία:

Με JavaScript ή χωρίς?

Δημοσίευση από EneMe » 16 Φεβ 2005 19:57

10% χωρίς javascript;

Σοβαρά; Μου ακούγεται υπερβολικό... Να το ακούσω για java applets να πω, ok!!!

Αλλά για javascripts;

:o

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Με JavaScript ή χωρίς?

Δημοσίευση από skeftomilos » 16 Φεβ 2005 21:32

Ο Opera που έχω δεν έχει τέτοιο πρόβλημα (δοκίμασα το δικό σου παράδειγμα). Έχω την έκδοση 7.54.

Η πηγή μου για το ποσοστό είναι αυτή. Ok, δεν είναι και εντελώς διασταυρωμένο! Μία ακόμα παράμετρος είναι η ευκολία με την οποία μπορεί να απενεργοποιηθεί η JavaScript στον Firefox. Στον IE η σχετική επιλογή είναι πολύ καλά κρυμμένη. Γι αυτό και κάνω την υπόθεση ότι η βέβαιη εκτίναξη της δημοτικότητας του Firefox θα οδηγήσει σε αύξηση του ποσοστού των No-JS χρηστών.

Ως παράδειγμα του πανικού που επικρατεί με τη security παραθέτω ένα απόσπασμα από το Readme.txt αρχείο εγκατάστασης του Eudora e-mail software:

---------------
SECURITY NOTE
---------------

Recent email viruses and worms have heightened many people's awareness of the need to be careful with email. For maximum protection, we recommend the following:

1. Change your Eudora attachment directory to something other than the default.
2. Disable JavaScript in your web browser.
3. ...


Αν οι ειδικοί δίνουν τέτοιες συμβουλές, τι περιμένετε να κάνει η ξαδέλφη μου στο χωριό?
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
Tanaka
Δημοσιεύσεις: 174
Εγγραφή: 27 Απρ 2004 21:40
Τοποθεσία: Κορωπί

Με JavaScript ή χωρίς?

Δημοσίευση από Tanaka » 17 Φεβ 2005 10:24

Rapid-eraser έγραψε:... .... afou sividitopiisa oti mporw va kavw ta panels kai tis efarmoges pou grafo se php pio fancy kai pio leitourgikes.
Ειδικά σε συνδυασμό με τα css μπορείς να φτιάξεις web εφαρμογές που δεν έχουν να ζηλέψουν σε τίποτα από μία κανονική εφαρμογή και ταυτόχρονα να δουλεύουν σε όλους του browsers. :hammer: :hammer: :hammer:
ThyClub έγραψε: Εγώ απο την άλλη προσπάθησα να βάλω το noscript σε μία σελίδα μου και με Opera νομίζω έκανε και τα δύο.


Και εμένα δουλεύει κανονικά!

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Με JavaScript ή χωρίς?

Δημοσίευση από Rapid-eraser » 17 Φεβ 2005 10:27

afto eivai gegovos :P
av simperilabeis oti elisa kai to problima tis ektiposis me php se server twra eimai se 8esi va ftiakso ta pavta .
apo mixavografika programata mexri oti mporeis va favtasteis
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Με JavaScript ή χωρίς?

Δημοσίευση από skeftomilos » 30 Μαρ 2005 13:59

Επανέρχομαι για να αναφερθώ στην περίπτωση που ο χρήστης ενεργοποιήσει τη JavaScript ενώ βλέπει τη σελίδα μας. Χμ, κάποιοι χαμογελάτε βλέπω! Θεωρείτε ότι η στατιστική πιθανότητα να τύχει κάτι τέτοιο είναι απειροελάχιστη. Συμφωνώ, εκτός... Εκτός αν δει κάτι στη σελίδα μας που τον πείσει ότι πρέπει να ενεργοποιήσει αμέσως τη JavaScript! Αυτό το κάτι μπορεί να είναι μία δική μας υπόνοια του τύπου "Παρακαλώ ενεργοποιήστε τη JavaScript για να δείτε την Αντζολίνα όπως τη γέννησε η μάνα της". Ακόμα μπορεί να είναι μια οπτική ένδειξη ύπαρξης πλούσιας λειτουργικότητας που απαιτεί scripting (π.χ. highlighting). Τι γίνεται σ' αυτή την περίπτωση?

Internet Explorer
Η ενεργοποίηση του scripting δεν έχει άμεση ενέργεια στην τρέχουσα σελίδα. Τίποτα δεν τρέχει. Ο χρήστης πρέπει να καταλάβει μόνος του ότι πρέπει να κάνει Refresh για να τρέξει ο κώδικας της σελίδας. Φυσικά μπορούμε να τον βοηθήσουμε στο <noscript> μήνυμά μας:
... ενεργοποιήστε τη JavaScript και πατήστε Refresh για να δείτε την Αντζολίνα ...

Opera
Ισχύουν ακριβώς τα ίδια με τον IE.

Firefox
Εδώ τα πράγματα γίνονται πιο ενδιαφέροντα. Η ενεργοποίηση της JavaScript ζωντανεύει ακαριαία τα συμβάντα onClick, onMouseOver κ.λπ. των στοιχείων της σελίδας. Ωραία, θα πείτε. Χμ, όχι και τόσο. Τα συμβάντα τρέχουν, αλλά οι ρουτίνες στις οποίες αναφέρονται δεν υπάρχουν! Παράδειγμα:

Κώδικας: Επιλογή όλων

<script>
  function display_time&#40;&#41; &#123;
    alert&#40;new Date&#40;&#41;.toLocaleString&#40;&#41;&#41;
  &#125;
</script>

<button onClick="display_time&#40;&#41;">Εμφάνιση Ημερομηνίας</button>
- Αν πατήσετε το κουμπί με ενεργό scripting εμφανίζεται το εξής:

Εικόνα

- Αν απενεργοποιήσετε τη JavaScript και το ξαναπατήσετε δε συμβαίνει τίποτα (απολύτως).

- Κάντε τώρα refresh τη σελίδα και μετά ενεργοποιήστε τη JavaScript. Πατήστε το κουμπί. Δε θα δείτε τίποτα να εμφανίζεται, αλλά αν ανοίξετε τη JavaScript Concole θα δείτε το εξής:

Εικόνα

Παρόλο που ο κώδικας είναι εκεί στην ίδια σελίδα, η script engine του Firefox δεν τη βλέπει. Ομολογώ ότι μου έκανε μεγάλη εντύπωση μόλις το διαπίστωσα. Περίμενα κάτι τέτοιο να συμβεί μόνο στην περίπτωση εξωτερικών αρχείων:

Κώδικας: Επιλογή όλων

<script src="time.js"></script>
Υπάρχει κάτι που μπορούμε να κάνουμε? Μπορούμε να ελέγξουμε αν μία ρουτίνα υπάρχει ή όχι με τον παρακάτω τρόπο:

Κώδικας: Επιλογή όλων

if &#40;window.display_time&#41; &#123; ...
Αυτό μας δείχνει μεταξύ άλλων ότι οι ρουτίνες που ορίζουμε γίνονται αυτόματα μέθοδοι του ιεραρχικά κορυφαίου αντικειμένου window. Για την ακρίβεια η window είναι ιδιότητα του αντικειμένου αυτού και αναφέρεται στον εαυτό του, καθώς δε μπορούμε να αναφερθούμε σα αυτό άμεσα. Η ιδιότητα self κάνει ακριβώς το ίδιο επίσης. Οι παρακάτω εκφράσεις είναι ισοδύναμες:

Κώδικας: Επιλογή όλων

if &#40;window.display_time&#41; &#123; ...
if &#40;self.display_time&#41; &#123; ...
if &#40;window.self.self.self.window.window.self.display_time&#41; &#123; ...
Οπλισμένοι με αυτή τη γνώση μπορούμε τελικά να γράψουμε τον εξής κώδικα στο συμβάν onClick του κουμπιού:

Κώδικας: Επιλογή όλων

<button onClick="if &#40;window.display_time&#41; &#123; display_time&#40;&#41; &#125; 
  else &#123; alert&#40;'Please refresh page to enable scripting.'&#41; &#125;">Εμφάνιση Ημερομηνίας</button>
Δεν ξέρω πόσο σας ενθουσιάζει η ιδέα να βάζετε τόσο κώδικα σε ένα HTML attribute - εμένα καθόλου. Πάντως είναι χρήσιμη η γνωση ότι αυτή η δυνατότητα υπάρχει.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

random
Δημοσιεύσεις: 12
Εγγραφή: 10 Ιαν 2004 12:14

Με JavaScript ή χωρίς?

Δημοσίευση από random » 28 Μάιος 2005 00:31

χωρις να αντιλέγω στις μεθοδους συμπεριφοράς προς τους no-JS visitors,
μια σημειωση για τα στατιστικά ( 10% disabled JS )

το ποσοστό αναφέρεται στους επισκέπτες ενός site ( www.w3schools.com ), και οπως σημειώνουν λόγω του περιεχομένου του (web authoring tutorials), οι επισκέπτες εχουν μεγάλες πιθανοτητες να ανηκουν σε συγκεκριμένες ομάδες (developers, newbie developers, γενικως κατι ψαχνουν περι web-dev),
που πιθανον ειναι πιό επιρρεπείς σε πειραματισμούς (disable scripting, εναλλακτικοι browsers kai OS) ή πιό πληροφοριμένοι σε θεματα ασφαλείας.

ετσι εξηγούν το ποσοστό Firefox 25%

εδω για Aprilio 2005 exei, Javascript false: (4%), o firefox/mozilla exei edw 5%
http://www.thecounter.com/stats/2005/April/javas.php
http://www.thecounter.com/stats/

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Με JavaScript ή χωρίς?

Δημοσίευση από skeftomilos » 29 Μάιος 2005 06:53

Πολύ σωστή η παρατήρηση Random. Thanks για τη διόρθωση.

Επομένως αν λάβουμε υπόψη και το επίπεδο εξοικείωσης του μέσου Έλληνα χρήστη, μπορεί το ποσοστό να είναι ακόμα μικρότερο στη χώρα μας.

Πάντως πρέπει να διακρίνουμε δύο ξεχωριστές περιπτώσεις. Τους χρήστες που ποτέ δεν έχουν ενεργή τη JavaScript, και αυτούς που άλλοτε την έχουν και άλλοτε όχι. Στην πρώτη κατηγορία ανήκουν αυτοί που την απενεργοποιούν συνειδητά και μόνιμα (οι "σκληροπυρηνικοί"), και αυτοί που θα την ήθελαν άλλα δε μπορούν να την έχουν (π.χ. άτομα με προβλήματα όρασης που χρησιμοποιούν Screen Readers (JAWS) ή Lynx με ALVA refreshable Braille display). Στη δεύτερη κατηγορία είναι άτομα που μπαίνουν στο Internet από διάφορους υπολογιστές, και δεν έχουν πάντα την ευχέρεια επιλογής να την ενεργοποιήσουν. Υπάρχουν και άλλοι που μερικές φορές, όχι πολύ συχνά, την απενεργοποιούν για να γλιτώσουν από κάποιο ενοχλητικό εφέ (σ' αυτούς ανήκω εγώ!).

Άρα ακόμα κι αν το ποσοστό των http requests είναι 4%, το ποσοστό των χρηστών που έστω περιστασιακά βρίσκονται στο Internet χωρίς JavaScript πρέπει να είναι αρκετά μεγαλύτερο, ίσως κοντά στο 10%.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

WSPNH
Δημοσιεύσεις: 97
Εγγραφή: 10 Μαρ 2006 12:52
Επικοινωνία:

Με JavaScript ή χωρίς?

Δημοσίευση από WSPNH » 30 Αύγ 2011 03:11

2011 τώρα και κοντεύει το 12. Πόσα έχουν αλλάξει από το 2005!!!
http://xesemesa.gr ή http://arxwn.eu όπως και να έχει http://jbaron.gr

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Με JavaScript ή χωρίς?

Δημοσίευση από korgr » 30 Αύγ 2011 09:50

Σήμερα απλά δεν υπάρχει web χωρίς ενεργοποιημένη javascript!

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Με JavaScript ή χωρίς?

Δημοσίευση από skeftomilos » 31 Αύγ 2011 21:11

Ανεξάρτητα πάντως από το τι συμβαίνει στην πράξη, αυτό που θα έπρεπε να συμβαίνει στη θεωρία είναι η JavaScript να παραμείνει υποβοηθητική και όχι απαραίτητη. Βέβαια το Web έχει εξελιχθεί σε έναν αχανή κόσμο, και εκεί μέσα μπορείς να βρεις τα καλύτερα και τα χειρότερα.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Με JavaScript ή χωρίς?

Δημοσίευση από dva_dev » 31 Αύγ 2011 21:27

Πάντως για μένα το θέμα της js έχει ξεφύγει σε σημείο να υπάρχουν σελίδες που όταν τρέχει να γονατίζουν τον η/υ
χρήσιμη και όμορφα/λειτουργικά εφέ αρκει να ξέρεις μέχρι που και να μην το παρακάνεις.

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Με JavaScript ή χωρίς?

Δημοσίευση από Rapid-eraser » 01 Σεπ 2011 10:09

Φαντάσου ότι διευρύνεται και η υποστήριξη στους browsers των web workers, προς τέρψη των αδηφάγων javascriptakidwv :P
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες