Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Themes & Theming ›

JavaScript wird doppelt ausgeführt

Eingetragen von geoport (101)
am 16.10.2014 - 19:44 Uhr in
  • Themes & Theming
  • Drupal 7.x oder neuer

Hallo FOrum,
ich habe den Spaß mit dem laden eines Nodes via Ajax fast gelöst, aktuell wird nur leider mein JavScript (jQuery-Code) mit jedem Click häufiger ausgeführt, vielleicht schaut von euch mal jemand mit drauf:
Ich vermute, es liegt daran, das bei jedem Ajax-Node-Reload die JavaScript-Datei mit folgendem Code erneut und zusätzlich geladen wird:

Hier der JavaScript-Part (ist über das Theme eingebunden):
[code]
(function ($).
{
Drupal.behaviors.ajaxsuche =.
{
attach:function(context,settings)
{
var old = null;
$('.search-result').on('click',function(e)
{
console.log(this);
if (old!=null)
{
$(old).removeClass('search-result-check');
}
old=this;
$(this).addClass('search-result-check');
e.preventDefault();//verhindert den eigentlich Link
//console.log($('.title a',this).attr('href'));

var nodeid_string = $('a',this).attr('href');
var nodeid = nodeid_string.replace(/\D/g,'');
$('.l-region--detail').text(nodeid);
//$('.l-region--detail').load('http://fw701/drupalversion/ajaxmodul/'+nodeid); klappt auch,jedoch gleicher Doppel-Fehler
$.ajax(
{
url: 'http://fw701/drupaversion/ajaxmodul/'+nodeid,
success: function(response,status)
{
$('.l-region--detail').html(response);
}
});
});
}
};
})(jQuery);
[/code]

Und hier eventuell der Code der mir den Node liefert (das mache ich über ein extra Modul):

[code]

function ajaxmodul_menu()
{
$items = array();
$items['ajaxmodul'] = array(
'type' => MENU_CALLBACK,
'page callback' => 'loadsearchednode',
'page arguments' => array(1),
'access arguments' => array('access content'),
'access callback' => TRUE,
'delivery callback' => 'ajax_callback',
);
return $items;
}

function loadsearchednode($nodeid)
{
$node = node_load($nodeid);
return node_view($node);
}

function ajax_callback($page_callback_result) {
// Only render content
$content = drupal_render($page_callback_result);
// Add CSS ans JS files, add some markup
$html = '' . drupal_get_css() . drupal_get_js() . '' . $content . '';
print $html;
// Perform end-of-request tasks.
drupal_page_footer();

}
[/code]
Über drupal_get_css und drupal_get_js werden die Files ja immer mit geladen, aber ich brauche diese ja nur einmal und nicht xFach. Vielleicht kennt von euch jemand das Problem.
vielen Dank für eure Hilfe.

‹ Menü - Block anzeigen bei 1< Menüeinträgen [gelöst]Javascript: Switch Class ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi, also die erste Dopplung

Eingetragen von geoport (101)
am 17.10.2014 - 07:31 Uhr

Hi,
also die erste Dopplung habe ich verhindert (siehe Code und http://codekarate.com/blog/drupal-7-prevent-duplicating-javascript-behav...), leider lädt meine Implementierung immer noch den Javascript-Code doppelt hinein und scheint diesen somit auch mehrfach auszuführen.
Wie kann ich im Omega-Theme eine Javascript-Datei lediglich einem Layout zuweisen?
mit bestem Gruß
Tim

(function ($)
{
Drupal.behaviors.ajaxsuche =.
{
attach:function(context,settings)
{
var old = null;
if(context == document)   //verhindert das doppelte Ausführen des Codes) siehe http://codekarate.com/blog/drupal-7-prevent-duplicating-javascript-behav...
{
$('.search-result').on('click',function(e)
{
console.log(this);
if (old!=null)
{
$(old).removeClass('search-result-check');
}
old=this;
$(this).addClass('search-result-check');
e.preventDefault();//verhindert den eigentlich Link
//console.log($('.title a',this).attr('href'));

var nodeid_string = $('a',this).attr('href');
var nodeid = nodeid_string.replace(/\D/g,'');
$('.l-region--detail').text(nodeid);
//$('.l-region--detail').load('http://fw701/drupalversion/ajaxmodul/'+nodeid); klappt auch,jedoch gleicher Doppel-Fehler
$.ajax(
{
url: 'http://fw701/drupalversion/ajaxmodul/'+nodeid,
success: function(response,status)
{
$('.l-region--detail').html(response);
}
});
});
}
};
}
})(jQuery);

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi, also dass das JavaScript

Eingetragen von geoport (101)
am 17.10.2014 - 11:24 Uhr

Hi,
also dass das JavaScript nur einem Layout des Themes zugewiesen wird ist über die layoutname.layout.inc eingestellt.

Leider bewirkt das immer noch nicht das der Code nur einmal ausgeführt wird sondern immer doppelt so oft wie beim Vorgänger.
Ich bin für jeden Rat dankbar.
mfg
Tim

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe die

Eingetragen von geoport (101)
am 17.10.2014 - 12:02 Uhr

Ich habe die JavaScript-Funktion jetzt nochmal Stück für Stück aufgebohrt. Das Problem wird lediglich durch die Ajax-Funktion verursacht. Erst nachdem der Response in meinem DOM eingebaut ist gibt es die Probleme.
mfg
Tim

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • How to Spend a Great Evening at Crash Online Games
  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
  • (gelöst)Drupal 11 installieren
  • Titel ausblenden
  • Ich brauche dringen Hilfe zu Updates oder ggf. wwie geht Composer?
  • Dynamische Ansicht von Seiteninhalt (als Tabelle?)
  • Vergabe von Berechtigungen für bestimmte Rollen; mir fehlt der Haken bzw. das „Veröffentlicht“
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • Rolle erstellen nicht zu finden
  • für drupal11 ein Slider Modul
Weiter

Neue Kommentare

  • Was für einen Server benutzt
    vor 1 Woche 11 Stunden
  • Wenn die Subdomain auf
    vor 1 Woche 2 Tagen
  • ordnerstruktur
    vor 1 Woche 2 Tagen
  • Die Subdomain muß auf den
    vor 1 Woche 5 Tagen
  • Verwende doch das Tag dafür,
    vor 5 Wochen 1 Stunde
  • Guckst du hier: step by step
    vor 4 Wochen 6 Tagen
  • Guckst du hier: step by step
    vor 4 Wochen 6 Tagen
  • Ich habe ja keine Angst vor
    vor 6 Wochen 2 Tagen
  • Ist grundsätzlichmachbar – aber nichts für „einfach mal schnell“
    vor 6 Wochen 4 Tagen
  • Vielen Dank erst einmal, aber
    vor 6 Wochen 6 Tagen

Statistik

Beiträge im Forum: 250290
Registrierte User: 20516

Neue User:

  • RollingSlots
  • Wolf Dab
  • Scottteday

» Alle User anzeigen

User nach Punkten sortiert:
wla9466
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 20 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association