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 - 18: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 - 06: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 - 10: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 - 11: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

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 3 Tagen 23 Stunden
  • Hey danke
    vor 4 Tagen 17 Stunden
  • Update: jetzt gibt's ein
    vor 5 Tagen 12 Stunden
  • Hallo, im Prinzip habe ich
    vor 1 Woche 2 Tagen
  • Da scheint die Terminologie
    vor 1 Woche 3 Tagen
  • Kannst doch auch alles direkt
    vor 2 Wochen 6 Stunden
  • In der entsprechenden View
    vor 2 Wochen 6 Stunden
  • Dazu müsstest Du vermutlich
    vor 2 Wochen 6 Stunden
  • gelöst
    vor 4 Wochen 3 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 4 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20449

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 9 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