KilliK Δημοσ. 30 Οκτωβρίου 2012 Δημοσ. 30 Οκτωβρίου 2012 Χαιρετω. Βρηκα ενα εξαιρετικο addon για τον Firefox https://addons.mozil...fox/?src=search το οποιο σκλοραρει αυτοματα την σελιδα. Το γεγονος αυτο το κανει χρησιμο οταν διαβαζω μεγαλες σελιδες αφου δεν χρειαζεται να κανω συνεχεια χειροκινητο scrolling. Το προβλημα ειναι οτι ακομη και με την μεγιστη ρυθμιση που προσφερει το addon, η ταχυτητα scrolling παραμενει αργη για τις αναγκες μου. Δυστυχως ο developer εχει εγκαταλειψει το addon οποτε σκεφτηκα να κανω μια προσπαθεια να πειραξω λιγο τον κωδικα του ωστε να βελτιωσω την ταχυτητα scrolling που εκτελει. Ομως δεν κατεχω σχεδον τιποτα απο προγραμματισμο και παρολο την προσπαθεια μου να καταταλαβω την λογικη του συγκεκριμενου κωδικα ψαχνωντας τις εντολες του στο ιντερνετ, ειμαι ακομη στο σκοταδι. Επομενως αν καποιος που ξερει απο javascript και θελει να ριξει μια ματια, αν μπορει ας μπου υποδειξει τι μπορω να αλλαξω σοτν κωδικα ωστε να τον κανω να σκρολαρει πιο γρηγορα. ( γυρω στις 4 φορες πιο γρηγορο scrolling απο το μεγιστο scrolling speed που προσφερει ηδη το addon ειναι αυτο που θελω) Ο κωδικας του addon: function ScrollyFox() { var thisClass = this; this.IntervalHandle = -1; this.Interval = 50; this.Step = 1; this.PageEndAction = "reverse"; this.PageEndCount = 0; this.PageEndPause = 100; var prefManager = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); var blnAutoRun = prefManager.getBoolPref("extensions.scrollyfox.autorun"); if (blnAutoRun) { setTimeout(function() {thisClass.Start();}, 250); }; this.click = function(e) { if (e.button == 0) //left-click: toggle the scrolling { this.scrollingStartStop(); } else if (e.button == 2) //right-click: open options panel { this.showPrefs(); } else if (e.button == 1) //middle-click: reverse scroll direction (if 'reverse' mode is enabled) { if (this.PageEndAction == "reverse") { this.Step = (this.Step * -1); } } }; this.refreshPrefs = function() { var intOldInterval = this.Interval; this.Interval = (101 - prefManager.getIntPref("extensions.scrollyfox.scrollspeed")) * 5; if ((this.Interval != intOldInterval) && (this.IntervalHandle != -1)) { this.Stop(); this.Start(); } this.PageEndAction = prefManager.getCharPref("extensions.scrollyfox.page-end-action"); if (this.Step < 1) { if (this.PageEndAction == "top") { this.Step = -100; } else if (this.PageEndAction == "reverse") { this.Step = -1; } else { this.Step = 1; } } }; this.scrollingStartStop = function() { if (this.IntervalHandle == -1) { this.Start(); } else { this.Stop(); } }; this.Start = function() { this.refreshPrefs(); if (this.PageEndAction == "top") { this.Step = 1; } this.IntervalHandle = setInterval(function(e) {thisClass.scroll()}, this.Interval); document.getElementById("scrollyfox_icon").src = "chrome://scrollyfox/content/scrollyfox_active.png"; prefManager.setBoolPref("extensions.scrollyfox.autorun", true); }; this.Stop = function() { clearInterval(this.IntervalHandle); this.IntervalHandle = -1; document.getElementById("scrollyfox_icon").src = "chrome://scrollyfox/content/scrollyfox_inactive.png"; prefManager.setBoolPref("extensions.scrollyfox.autorun", false); }; this.showPrefs = function() { window.openDialog('chrome://scrollyfox/content/scrollyfoxPrefs.xul', '', 'centerscreen'); }; this.scroll = function() { this.refreshPrefs(); var objDocument = window.content.document; var intPageHeight = Math.max( objdocument.body.scrollHeight, objdocument.body.offsetHeight, objdocument.documentElement.scrollHeight, objdocument.documentElement.offsetHeight ); if (intPageHeight <= window.content.innerHeight) { document.getElementById("scrollyfox_icon").src = "chrome://scrollyfox/content/scrollyfox_active.png"; } else { if (this.Step > 0) { document.getElementById("scrollyfox_icon").src = "chrome://scrollyfox/content/scrollyfox_down.png"; } else { document.getElementById("scrollyfox_icon").src = "chrome://scrollyfox/content/scrollyfox_up.png"; } window.content.scrollBy(0, this.Step); var blnAtTop = (window.content.pageYOffset <= 0); var blnAtEnd = (window.content.pageYOffset >= (intPageHeight - window.content.innerHeight)); if (blnAtTop || blnAtEnd) { document.getElementById("scrollyfox_icon").src = "chrome://scrollyfox/content/scrollyfox_active.png"; this.PageEndCount++; if (this.PageEndCount >= this.PageEndPause) { if (blnAtTop) { this.Step = 1; this.PageEndCount = 0; } else { if (this.PageEndAction == "reverse") { this.Step = -1; this.PageEndCount = 0; } else if (this.PageEndAction == "top") { this.Step = -100; this.PageEndCount = 0; } else if (this.PageEndAction == "refresh") { this.Step = -100; window.content.scrollTo(0, 0); window.content.location.reload(true); } } } } else { this.PageEndCount = 0; } } }; } var scrollyfox = new ScrollyFox(); το ιδιο το addon με την μορφη zip, στο οποιο περιεχονται τα υπολοιπα στοιχεια του (icons, το xul file με τον xul κωδικα, το js file με τον javascript code,κτλ) https://addons.mozil...fox/?src=search υγ. ο κωδικας περιεχει και καποιες αλλες λειτουργιες για το τι θα κανει οταν φτασει στο τελος της σελιδας (reload page, stop scrolling, reverse scolling, go to top of page,etc) το κομματι που ρυθμιζει την ταχυτητα του scrolling δεν εχω καταλαβει ομως ποιο ειναι και πως μπορω να το αλλαξω ωστε η μεγιστη ταχυτητα scrolling να γινει ακομη μεγαλυτερη.
iniohos Δημοσ. 30 Οκτωβρίου 2012 Δημοσ. 30 Οκτωβρίου 2012 αλλαξε το this.interval με καποια μεγαλυτερη τιμη.
defacer Δημοσ. 30 Οκτωβρίου 2012 Δημοσ. 30 Οκτωβρίου 2012 Άλλαξε το * 5 με * 5 / Χ για να επιταχύνεις την ταχύτητα του scrolling κατά ένα παράγοντα X. Δεν ξέρω όμως αν χρειάζεται καν. Αν χτυπήσεις about:config και αλλάξεις την τιμή του extensions.scrollyfox.scrollspeed σε 100 ή 101 (όχι παραπάνω) θα πρέπει να πηγαίνει πάρα πολύ γρήγορα χωρίς να πειράξεις τίποτα στο source.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα