robsite

In webdev

jQuery Speedup bei vielen Events

Firefox 3 ist extrem lahm beim verlassen einer Seite, wenn man jQuery benutzt und sehr viele (>1000) Elemente an Events bindet.

Beispiel. 5000 divs, dann:

$("div").hover(function() { 
    $(this).addClass('highlight'); 
},
function() {
    $(this).removeClass('highlight');
})

Seite läd, funktioniert, man klickt auf nen Link zu ner anderen Seite, wartet ein wenig und...

/images/posts/0000/1600/ffjqueryhang_big.jpg

Stellte sich heraus, dass jQuery beim verlassen der Seite die Eventbindungen aller Elemente entfernt. Genau daran bricht Firefox aber verzweifelt zusammen.

Der Code dafür liegt in jquery-1.3.2.js von Zeile 3106 bis 3111 und verhindert anscheinend Speicherleaks im IE und mouseover-Fehler beim neuladen:

// Prevent memory leaks in IE
// And prevent errors on refresh with events like mouseover in other browsers
// Window isn't included so as not to unbind existing unload events
jQuery( window ).bind( 'unload', function(){ 
    for ( var id in jQuery.cache )
    // Skip the window
    if ( id != 1 && jQuery.cache[ id ].handle )
        jQuery.event.remove( jQuery.cache[ id ].handle.elem );
});

In jquery-1.3.2.min.js:

o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});

Ich hab ihn mal rausgeworfen, wodurch FF die Seite wieder schnell verlässt ohne zu hängen.

Bis jetzt hab ich keine mysteriösen Fehler beim refresh entdeckt. Auch Speicherleaks sind keine große Verschlimmerung der browser-experience für IE-Nutzer...

· jquery, webdev · ★

TYPO3 Video Tutorials! - Inculding Images (sic)

free-typo3-video-tutorials-episode-inculding-images-sic

Wenn schon eine GUI, dann doch bitte eine die nicht komplizierter ist als das HTML per Hand zu schreiben /:>

Ich frag mich, welche Gründe es gibt Typo3 zu benutzen. Für kleine einfache Seiten gibt es einfachere CMS und für größere Seiten mit speziellen Anforderungen gibt es Frameworks mit denen man diese ohne Overhead bauen kann.

Jedes CMS, das Lehrgänge braucht, hat sein Ziel verfehlt.

via Ludwig

· webdesign, webdev · ★

Ultraviolet Syntaxes

Kleine Notiz für mich, da ich das immer vergesse und es auch nicht auf Ultraviolets Website steht:

actionscript, active4d, active4d_html, active4d_ini, active4d_library, ada, antlr, apache, applescript, asp, asp_vb.net, bibtex, blog_html, blog_markdown, blog_text, blog_textile, build, bulletin_board, c++, c, cake, camlp4, cm, coldfusion, context_free, cs, css, css_experimental, csv, d, diff, dokuwiki, dot, doxygen, dylan, eiffel, erlang, f-script, fortran, fxscript, greasemonkey, gri, groovy, gtd, gtdalt, haml, haskell, html-asp, html, html_django, html_for_asp.net, html_mason, html_rails, html_tcl, icalendar, inform, ini, installer_distribution_script, io, java, javaproperties, javascript, javascript+prototype, javascript+prototype_bracketed, jquery_javascript, json, languagedefinition, latex, latex_beamer, latex_log, latex_memoir, lexflex, lighttpd, lilypond, lisp, literate_haskell, logo, logtalk, lua, m, macports_portfile, mail, makefile, man, markdown, mediawiki, mel, mips, mod_perl, modula-3, moinmoin, mootools, movable_type, multimarkdown, objective-c++, objective-c, ocaml, ocamllex, ocamlyacc, opengl, pascal, perl, php, plain_text, pmwiki, postscript, processing, prolog, property_list, python, python_django, qmake_project, qt_c++, quake3_config, r, r_console, ragel, rd_r_documentation, regexp, regular_expressions_oniguruma, regular_expressions_python, release_notes, remind, restructuredtext, rez, ruby, ruby_experimental, ruby_on_rails, s5, scheme, scilab, setext, shell-unix-generic, slate, smarty, sql, sql_rails, ssh-config, standard_ml, strings_file, subversion_commit_message, sweave, swig, tcl, template_toolkit, tex, tex_math, textile, tsv, twiki, txt2tags, vectorscript, xhtml_1.0, xml, xml_strict, xsl, yaml, yui_javascript

Das sind die verfügbaren Syntaxen in Ultraviolet. Erzeugt hiermit:

require 'rubygems'
require 'uv' 
File.open('/Users/rob/Desktop/syntaxes.txt', 'w') {|f| f.write(Uv.syntaxes.join(', '))}

Ultraviolet ist eine klasse Library zum highlighten von Syntax. Benutz ich zusammen mit tm_syntax_highlighting für die schicken Codeboxen hier im Blag. tm_syntax_highlighting wiederum liest die Farbdefinitionen von TextMate aus, wodurch der Code hier genauso chique aussieht wie in meinem Lieblingseditor. Har!

· rails, ruby, webdev · ★
Mastodon