Bookmarklet αντικατάστασης κειμένου σε σελίδα

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

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

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

Bookmarklet αντικατάστασης κειμένου σε σελίδα

Δημοσίευση από skeftomilos » 23 Μάιος 2008 07:38

Ένα bookmarklet που αντικαθιστά κείμενο με άλλο κείμενο μέσα σε μια σελίδα. Χρήσιμο αν θέλετε να πάρετε ένα screenshot της σελίδας, αλλά υπάρχουν κάποιες λέξεις που δεν πρέπει να φαίνονται στο screenshot, και θα έπρεπε διαφορετικά να τις επεξεργαστείτε με image editor.

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

javascript:void(function(){var findText=prompt('Find what','');if(findText){var replaceWith=prompt('Replace with','');if(replaceWith){var findTextRE=new RegExp(findText.replace(/([\^\$\.\*\?\+\{\}\(\)\[\]\/\|\\])/g,'\\$1'),'gi');var elements=document.getElementsByTagName('*');for(var i=0,element;element=elements[i];i++){var child=element.firstChild;while(child){ if(child.nodeType==3){child.nodeValue=child.nodeValue.replace(findTextRE,replaceWith);} child=child.nextSibling;}}}}}())
Ο κώδικας σε πιο ευανάγνωστη μορφή:

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

var findText = prompt('Find what', '')
if (findText) {
  var replaceWith = prompt('Replace with', '')
  if (replaceWith) {
    var findTextRE = new RegExp(findText.replace(/([\^\$\.\*\?\+\{\}\(\)\[\]\/\|\\])/g, '\\$1'), 'gi')
    var elements = document.getElementsByTagName('*')
    for (var i = 0, element; element = elements[i]; i++) {
      var child = element.firstChild
      while (child) {
        if (child.nodeType == 3) {
          child.nodeValue = child.nodeValue.replace(findTextRE, replaceWith)
        }
        child = child.nextSibling
      }
    }
  }
}
Κατ' αρχήν ζητά από το χρήστη το κείμενο που θα αντικατασταθεί και το κείμενο που θα το αντικαταστήσει. Μετά διατρέχει όλα τα elements της σελίδας, και για το καθένα διατρέχει όλα τα child nodes αναζητώντας Text Nodes (nodeType == 3). Τέλος κάνει αντικατάσταση στο nodeValue.

Δοκιμασμένο σε Firefox 1.5 και IE6

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Bookmarklet αντικατάστασης κειμένου σε σελίδα

Δημοσίευση από cherouvim » 23 Μάιος 2008 09:52

Καλό!
Εικόνα
Συνημμένα
skeft.png
lol

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

Bookmarklet αντικατάστασης κειμένου σε σελίδα

Δημοσίευση από skeftomilos » 23 Μάιος 2008 17:48

Ουάου. Το παράκανες εσύ! :-)

Απάντηση

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

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

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