sitomp: onerror-Eventhändler funktioniert nicht ...

Hi,

bei dem Aufruf folgender Seite:

  
<!DOCTYPE html>  
<html>  
<head>  
	<meta charset="UTF-8">  
</head>  
<body>  
	<img src="gibtsnicht.gif" onerror="alert('an dieser Stelle  
    sollte eine Grafik stehen,\n doch leider kann sie nicht angezeigt werden!');">	  
</body>  
</html>  

gibt mein Browser keine alert-Meldung aus!?

"gibtsnicht.gif" gibts natürlich nicht!

Die Web-Konsole von Firefox meint nur:

  
SyntaxError: unterminated string literal (LAB2.htm:1)  

Was für mich keinen Sinn ergibt, aber warscheinlich auch nichts mit dem onerror-Problem zutun hat.

Bekommt ihr bei der html-site eine alert? Was läuft schief?

Danke für eure Antworten.

sitomp

  1. Hi,

    <img src="gibtsnicht.gif" onerror="alert('an dieser Stelle
        sollte eine Grafik stehen,\n doch leider kann sie nicht angezeigt werden!');">

      
    
    > Die Web-Konsole von Firefox meint nur:  
    >   
    > ~~~html
      
    
    > SyntaxError: unterminated string literal (LAB2.htm:1)  
    > 
    
    

    Der Inhalt des alert ist eine JavaScript-Zeichenkette, und die kannst du nicht einfach so über Zeilenenden hinweg notieren.

    Entweder

    • schreibst du die komplette Zeichenkette in eine Zeile, oder
    • machst mehrere einzeilige Zeichenketten daraus, die du dann mit + verknüpfst, oder
    • du machst vor dem Zeilenumbruch einen Backslash hin (damit ist der Zeilenumbruch dann „maskiert“ und innerhalb der Zeichenkette erlaubt)

    MfG ChrisB

    --
    Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/
    1. Ja, das war es. Danke :)

  2. Hi,

    bei dem Aufruf folgender Seite:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    </head>
    <body>
    <img src="gibtsnicht.gif" onerror="alert('an dieser Stelle
        sollte eine Grafik stehen,\n doch leider kann sie nicht angezeigt werden!');">

    Zeilenumbrüche in einem JavaScript-String-Literal in einem HTML-Attribut solltest du vermeiden.

    Am besten lagerst du den JavaScript-Code aus, anstatt ihn in ein Attribut zu schreiben, und nutzt Event-Handling, um den error-Event zu überwachen:

    [link:http://molily.de/js/event-handling-grundlagen.html]
    [link:http://molily.de/js/event-handling-fortgeschritten.html]

    Prinzipiell wäre folgendes möglich, ich würde aber davon abraten:

    [code lang=html]<img src="…" onerror="alert('Hallo \ Welt')">

      
    Zwischen den Attributen sind Zeilenumbrüche unproblematisch:  
      
    ~~~html
    <img src="…"  
      onerror="alert('Hallo Welt')">
    

    SyntaxError: unterminated string literal (LAB2.htm:1)

    
    >   
    > Was für mich keinen Sinn ergibt, aber warscheinlich auch nichts mit dem onerror-Problem zutun hat.  
      
    Doch, das ist ein Syntaxfehler, der dafür sorgt, dass der Code nicht geparst, geschweige denn ausgeführt werden kann. Das ist höchstwahrscheinlich die Ursache deines Problems.  
      
    Mathias
    
    -- 
    [Chaplin.js - JavaScript application architecture on top of Backbone.js](http://chaplinjs.org/)