Events

Dom-Events sind ein wichtiges Thema für Javascript und Browser. Die Gründe dafür sollen hier nicht besprochen werden. Lediglich wie du mit jybrid dom-events verarbeitest. All diese Methoden werden ohne javascript "eval" ausgeführt. Das bedeutet, dass du bei setEvent,addEvent und fireEvent bereits im initial-page-load diese functionen im Browser gesetzt haben musst.

Beispiel:

<script>var myText=function(){jybrid.prependNode("html-element","<code>"+new Date().getTime()+": Fires the \"myText\" element clicked<br></code>")}</script>

Etwas schöner geht das setzen von javascript-funktionen mit jybrid. So ist das Snippet gleich an der richtigen Stelle.

Factory::getSnippets()
       ->addSnippet(Snippets::afterPluginScripts, 'var myText=function(){jybrid.prependNode("#semiBody","<code>"+new Date().getTime()+": Fires the \"myText\" element clicked<br></code>")}');

setEvent

Einfachster Anwendungsfall ist ein "onclick"-event an ein html a-tag zu klemmen. Hier ist wichtig zu wissen, dass falls bereits dieses "onclick"-event mit diese verbundenen Javascript-function gesetzt wurde, wird zuerst die alte Javascript-Function entfernt und mit der "neuen" Javscript-Function gesetzt.

$objResponse->setEvent('html-element', 'click', 'myText');

jybrid.on

Mit Jybrid kannst du ebenso nur die javascript-funktionen nutzen. Für die php funktion setEvent müsstest du das folgenden code verwenden.

jybrid.off('html-element', 'click', 'myText');
jybrid.on('html-element', 'click', 'myText');

addEvent

Hier wird einfach eine javascript-funktion an den html tag gehängt. Falls du 10 mal mit addEvent die selbe Javascript-funktion geaddet hast, wird diese funktion auch 10 mal ausgeführt.

$objResponse->addEvent('html-element', 'click', 'myText');

jybrid.on

Mit Jybrid kannst du ebenso nur die javascript-funktionen nutzen. Für die php funktion addEvent müsstest du das folgenden code verwenden.

jybrid.on('html-element', 'click', 'myText');

removeEvent

Hiermit entfernst du eine javascript-funktion aus einem event(beispielsweise "onclick"). Sollt dieses event mit dieser javascript-funktion nicht im html tag vorhanden sein, wird kein Fehler zurück gegeben.

$objResponse->removeEvent('html-element', 'click', 'myText');

jybrid.off

Für die php funktion removeEvent müsstest du das folgenden code verwenden.

jybrid.off('html-element', 'click', 'myText');

removeEvents

Hiermit entfernst du alle javascript-funktionen(beispielsweise "onclick") von einem html-tag.

$objResponse->removeEvents('html-element', 'click');

jybrid.off

Für die php funktion removeEvents müsstest du das folgenden code verwenden.

jybrid.off('html-element', 'click');

fireEvent

Du kannst mit dieser Response direkt ein zuvor gesetztes event ausführen. Du führst quasi einen "click" via ajax-response aus.

$objResponse->fireEvent('html-element', 'click');

jybrid.fire

Für die php funktion fireEvent müsstest du das folgenden code verwenden.

jybrid.fire('html-element', 'click');

Die fire-methode war in xajax nicht enthalten.

xajax.setEvent, xajax.addHandler

Die alten xajax methoden wurden durch die jybrid methoden ersetzt. Mit Xajax war es möglich durch eval('element.' + sEvent + ' = function(e) { ' + code + '; }'); javascript-funktionen via ajax-response zu setzen. Diese "eval" methoden werden nicht mehr unterstützt. Einfach aus Gründen von XSS preventions .