Ergebnis 1 bis 23 von 23

Thema: Javascript im Backend funktioniert nicht

  1. #1
    Contao-Nutzer
    Registriert seit
    17.03.2016.
    Beiträge
    131

    Standard Javascript im Backend funktioniert nicht

    Hallo zusammen,

    ich habe noch ein einfach Script:

    HTML-Code:
    /* /* JS (jQuery) */
    
      {
        document.getElementById('ctrl_xt_regioforum').readOnly = true;
      } 
    
    (jQuery);
    Das wird zwar im Frontend ohne Probleme ausgeführt. Aber im Backend funktioniert das nicht, obwohl das Feld das gleiche ist.

    Woran kann das liegen Fehlermeldung laut FireFox: TypeError: document.getElementById(...) is null

  2. #2
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    Wenn der Browser sagt: " document.getElementById(...) is null", dann gibt es das Element mit dieser ID nicht.

    Wozu Du in Deinem (unvollständigen) Code jQuery stehen hast, verstehe ich nicht, denn es wird nirgends verwendet.

    Edit: Im Backend hast Du kein jQuery!
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  3. #3
    Contao-Nutzer
    Registriert seit
    17.03.2016.
    Beiträge
    131

    Standard

    OK, aber diese IS wird wirklich verwendet:

    Hier einmal ein Schipssel aus dem Backend:

    HTML-Code:
    <fieldset id="pal_forum" class="tl_box">
    <legend onclick="AjaxRequest.toggleFieldset(this,'forum','tl_member')">Forum und Arbeitskreis</legend>
    <div class="w50">
      <h3><label for="ctrl_xt_regioforum">Ihr Regionalforum gemäß Postleitzahlbereich</label></h3>
      <input name="xt_regioforum" id="ctrl_xt_regioforum" class="tl_text" value="" onfocus="Backend.getScrollOffset()" type="text">
      <p class="tl_help tl_tip" title="">Ihr Regionalforum gemäß Postleitzahlbereich</p>
    </div>
    </fieldset>

  4. #4
    Contao-Fan
    Registriert seit
    16.11.2012.
    Ort
    Freiburg
    Beiträge
    539

    Standard

    Was passiert bei folgendem Code

    Code:
    $('#ctrl_xt_regioforum').attr('readonly', true);
    bzw.
    Code:
    $('#ctrl_xt_regioforum').prop('readonly', true);
    Grüße
    Alex

  5. #5
    Contao-Nutzer
    Registriert seit
    17.03.2016.
    Beiträge
    131

    Standard

    the same

  6. #6
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    Code:
    $('#ctrl_xt_regioforum')
    kann im Backend nicht funktionieren, da jQuery und im Backend gibt's kein jQuery, sondern Mootools.

    Der entsprechende Befehl (Selektor) wäre da

    Code:
    $('ctrl_xt_regioforum')
    (ohne die Raute; siehe auch https://mootools.net/core/docs/1.5.1/Element/Element)
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  7. #7
    Contao-Fan
    Registriert seit
    16.11.2012.
    Ort
    Freiburg
    Beiträge
    539

    Standard

    Also ich weiß nicht wie dein Code aussieht, aber so funktioniert es.

    Code:
    $(function() {
    				$('#ctrl_xt_regioforum').attr('readonly', true);
    			});
    Grüße
    Alex

  8. #8
    Contao-Fan
    Registriert seit
    16.11.2012.
    Ort
    Freiburg
    Beiträge
    539

    Standard

    Zitat Zitat von fiedsch Beitrag anzeigen
    kann im Backend nicht funktionieren, da jQuery und im Backend gibt's kein jQuery, sondern Mootools.
    Im einem anderem Thread hat er schon angefragt zwecks jQuery im Backend.
    Grüße
    Alex

  9. #9
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    Zitat Zitat von 07alex07 Beitrag anzeigen
    Im einem anderem Thread hat er schon angefragt zwecks jQuery im Backend.
    Davon wurde hier aber nichts geschrieben und meine Glaskugel ist kaputt :-o
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  10. #10
    Contao-Nutzer
    Registriert seit
    17.03.2016.
    Beiträge
    131

    Standard

    Ich hatte auch für das Backend diese Erweiterung installiert DIe mir vorgeschlagen wurde.

  11. #11
    Contao-Nutzer
    Registriert seit
    17.03.2016.
    Beiträge
    131

    Standard

    Zitat Zitat von 07alex07 Beitrag anzeigen
    Also ich weiß nicht wie dein Code aussieht, aber so funktioniert es.

    Code:
    $(function() {
    				$('#ctrl_xt_regioforum').attr('readonly', true);
    			});
    Wo genau muss ich denn diesen Code einbinden ? Sorry aber ich komme da irgendwie nciht weiter

  12. #12
    Contao-Fan
    Registriert seit
    16.11.2012.
    Ort
    Freiburg
    Beiträge
    539

    Standard

    du musst dir eine Datei z.b. script.js im Modul ablegen und dann bindest du es für das Backend ein.

    Code:
    if (TL_MODE == 'BE')
    {
        $GLOBALS['TL_JAVASCRIPT'][] = '...';
    }
    Grüße
    Alex

  13. #13
    Contao-Nutzer
    Registriert seit
    17.03.2016.
    Beiträge
    131

    Standard

    Das habe ich und wenn ich ins Backend gehe, bringt mir zwar FireFox keinen Fehler mehr, das Feld ist aber immer noch für eine EIngabe offen.

    VG
    Marco

  14. #14
    Contao-Fan
    Registriert seit
    16.11.2012.
    Ort
    Freiburg
    Beiträge
    539

    Standard

    kann man sich das irgendwie anschauen? hättest du Zugangsdaten?
    Grüße
    Alex

  15. #15
    Contao-Nutzer
    Registriert seit
    17.03.2016.
    Beiträge
    131

  16. #16
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.150
    Partner-ID
    10107

    Standard

    Du verwendest jQuery.noConflict(); - benutzt aber direkt danach ohnehin wieder $. Außerdem brauchst du das jQuery.noConflict() nicht in deiner eigenen Datei, wenn du wie zuvor erwähnt die entsprechende Erweiterung zur Intergration von jQuery im Backend benutzt. Darüberhinaus solltest du deinen Code so wrappen:
    Code:
    (function($) {
    	alert('TEST');
    	$('#ctrl_xt_regioforum').attr('readonly', true);
    })(jQuery);

  17. #17
    Contao-Nutzer
    Registriert seit
    17.03.2016.
    Beiträge
    131

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Du verwendest jQuery.noConflict(); - benutzt aber direkt danach ohnehin wieder $. Außerdem brauchst du das jQuery.noConflict() nicht in deiner eigenen Datei, wenn du wie zuvor erwähnt die entsprechende Erweiterung zur Intergration von jQuery im Backend benutzt. Darüberhinaus solltest du deinen Code so wrappen:
    Code:
    (function($) {
    	alert('TEST');
    	$('#ctrl_xt_regioforum').attr('readonly', true);
    })(jQuery);
    Das "Test" wird angezeigt, aber das war es dann auch schon. Mehr passiert nicht :/ ich habe 3 Scripte eingebunden, wovon 1 funktioniert. Der rest aber nicht. Im frontend laufen alle 3 ohne Probleme.

  18. #18
    Contao-Nutzer
    Registriert seit
    17.03.2016.
    Beiträge
    131

    Standard

    Wenn ich diesen Code:

    HTML-Code:
    (function($) {
    	//alert('TEST');
    	$('#ctrl_xt_regioforum').attr('readonly', true);
    
    })(jQuery);
    in Firefox unter JS Umgebung einfüge. Funktioniert es ohne Probleme im Backend. Aber der gleiche Code wird aber nciht ausgeführt, wenn er über eine JS datei eingepflegt ist...

  19. #19
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.150
    Partner-ID
    10107

    Standard

    Wie hast du diesen Code überhaupt eingebunden? Wenn du dein JavaScript im <head> einbinden hast lassen kann der Code natürlich nicht funktionieren, denn dann existiert zu diesem Zeitpunkt das Element mit der CSS ID "ctrl_xt_regioforum" noch gar nicht. Du musst entweder $(document).ready verwenden oder deinen Code am Ende des <body> ausgeben lassen.

  20. #20
    Contao-Nutzer
    Registriert seit
    17.03.2016.
    Beiträge
    131

    Standard

    Ich brauche den Code im Backend und habe Ihn über die dca eingebunden.

  21. #21
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.150
    Partner-ID
    10107

    Standard

    Zitat Zitat von m.haase Beitrag anzeigen
    Ich brauche den Code im Backend und habe Ihn über die dca eingebunden.
    Die Frage war wie hast du dein JavaScript eingebunden Was meinst du mit
    Zitat Zitat von m.haase Beitrag anzeigen
    und habe Ihn über die dca eingebunden.
    Wo wird der Code eingebunden? Wie gesagt, wenn dein Code im <head> eingebunden wird, dann musst du $(document).ready verwenden. Damit dein Code so wie er jetzt ist funktioniert, muss er am Ende des <body> eingebunden werden - da erst dann das Element existiert, dass du ansprechen willst.

  22. #22
    Contao-Nutzer
    Registriert seit
    17.03.2016.
    Beiträge
    131

    Standard

    Also, ich habe meine .js datei über die dcaconfig.php eingebunden:

    HTML-Code:
    //javascript Backend
    if (TL_MODE == 'BE')
    {
    
       $GLOBALS['TL_JAVASCRIPT'][] = '/files/regionalforum_be.js';
       $GLOBALS['TL_JAVASCRIPT'][] = '/files/regionalforum_read_only_be.js';
       $GLOBALS['TL_JAVASCRIPT'][] = '/files/checkbox_be.js';
      
    }
    Die regionalforum_be.js funktioniert einwandfrei.

    Mein derzeitiger code sieht so aus:

    HTML-Code:
    (function($) {
    	//alert('TEST');
    	$('#ctrl_xt_regioforum').attr('readonly', true);
    
    })(jQuery);

  23. #23
    Contao-Nutzer
    Registriert seit
    17.03.2016.
    Beiträge
    131

    Standard

    Jetzt klappt der COde Ich habe den Fehler mit deiner Hilfe gefunden

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •