Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 35cf7c70

Von Moritz Bunkus vor mehr als 9 Jahren hinzugefügt

  • ID 35cf7c7029b4aa69eb9d02c7533d1a15aafb118b
  • Vorgänger 3a94c2e2
  • Nachfolger 144a1f5e

ClientJS: Ziel-Argument bestimmter Funktionen vorne trimmen

jQuery kann aus HTML-Strings DOM-Objekte bauen:
$("<p>stuff</p>"). Beginnt der HTML-String mit Leerzeichen, so croakt
jQuery daran. Daher bei den betroffenen Funktionen, die immer auf einem
so gebauten DOM-Objekt hantieren, das Ziel-Argument um führende
Leerzeichen bereinigen.

Unterschiede anzeigen:

SL/ClientJS.pm
122 122
  scroll_into_view       => 1,  # $(<TARGET>)[0].scrollIntoView()
123 123
);
124 124

  
125
my %trim_target_for = map { ($_ => 1) } qw(insertAfter insertBefore appendTo prependTo);
126

  
125 127
sub AUTOLOAD {
126 128
  our $AUTOLOAD;
127 129

  
......
154 156
    $args[$idx] = "" . $args[$idx] if ref($args[$idx]) eq 'SL::Presenter::EscapedText';
155 157
  }
156 158

  
159
  # Trim leading whitespaces for certain jQuery functions that operate
160
  # on HTML code: $("<p>test</p>").appendTo('#some-id'). jQuery croaks
161
  # on leading whitespaces, e.g. on $(" <p>test</p>").
162
  $args[0] =~ s{^\s+}{} if $trim_target_for{$method};
163

  
157 164
  push @{ $self->_actions }, [ $method, @args ];
158 165

  
159 166
  return $self;

Auch abrufbar als: Unified diff