• Anmelden

1

Freitag, 24. September 2010, 02:11

Java und HTML

Hi Leute,

bei meinem Thread handelt es sich nicht um Spielentwicklung aber schon um Java selbst und dazu noch HTML.
Um genau zu sein, geht es um Webseiten und da viele in der Community fit in Java sind, wollte ich es wagen, meine Frage zu stellen:

Ich versuche ein Toolbar, welcher am unteren Rand der Webseite angepinnt ist (position: fixed), zu programmieren.
Dieser Toolbar hat 2 Buttons bzw Links, die ich mit folgenden Codes realisiert habe:
[php]<div id="nav-bar">
<div id="selector-button1">Button1</div>
<div id="selector-button2">Button2</div>
</div>[/php]

Dazu kommen Menüs, die die Höhe 0px betragen, die also auf der Webseite noch nicht zu sehen sind. Die Codes:
[php]<div class="" id="button1-menu" style="left: 238px; height: 0px;">
<div class="" id="button2-menu" style="left: 238px; height: 0px;">[/php]

Und jetzt kommt der Teil mit Java und genau hier komme ich nicht weiter.
Ich möchte, dass, wenn auf Button1 geklickt wird, dass ein Menü, wie button1-menu seine Höhe von 0px nach 400px wechselt und dies in einer schönen Animation. Somit wird ein Menü sichtbar.
Wenn allerdings wieder auf Button1 geklickt wird, dann soll button1-menu seine Höhe auf 0px wechseln, also dieses soll runterklappen.
Oder beträgt button1-menu bereits eine Höhe von 400px und ich klicke auf Button2, dann soll button1-menu runterklappen und button2-menu hochklappen.

Dies alles mit Java zu programmieren ist mir zu knifflig, da ich nicht sonderlich fit in Java bin.
Möglicherweise lässt sich meine Anforderung auch ohne Java (also nur mittels HTML) bewerkstelligen, was ich allerdings nicht glaube.

Wäre schön, wenn mir jemand dabei helfen könnte, eine Lösung für mein Problem zu finden. :)

Diesen Toolbar unten möchte ich realisieren: klick mich
Spoiler
2 Projekte am Laufen!
RYUGAN - Beat'emUp
ProjectX - Thriller
zum Lesen den Text mit der Maus markieren
:beach:

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »IArts« (24. September 2010, 17:29)


2

Freitag, 24. September 2010, 07:01

:/ Ich glaube, du hast einen gewissen Unterschied noch nicht verstanden.

Du musst unterscheiden zwischen serverseitiger Programmierung und Clientseitiger Programmierung. Serverseitige Programmierung berechnet alles im Vorraus und liefert dir ein statisches Dokument zurück. Das, was du möchtest, Fading und aus/einklappen, ist weder mit serverseitigem Java noch mit CSS machbar, sondern nur mit einer Clientseitigen Sprache, beispielsweise Javascript. Theoretisch ist es möglich, Animationen mit Java-Applets oder Flash einzubauen, aber rate mal, wie populär das ist. Jap, genau, das verwendet kaum jemand, zu kompliziert, zu ladeaufwändig, Plugins werden benötigt bababa.

Ich kann dir empfehlen dich mit einer Javascript-Bibliothek wie JQuery zu beschäftigen oder mit Javascript generell, da das momentan der etablierteste Weg ist neben reinen Flashanwendungen, eine Animation in eine Webseite einzubauen. Ich sage wissentlich "der etablierteste" und nicht "der beste" - am W3-Konzept schlackert generell einiges kräftig im Wind, aber das ist wohl ein anderes Thema :X Also, sagen wir es so: wirklich satbile Programmierung kriegst du eher mit Java allein hin, aber für animierten Firlefanz brauchst du nunmal clientseitige Programmierung.

3

Freitag, 24. September 2010, 11:31

Vorweg: JS != JAVA.
Aber solch ne Bar ist Machtbar mit Java, bloß deine User müssen das JRE besitzen oder nen Plugin bei JS da gleiche.
Wozu gibt es Applets.
Mit HTML/CSS wäre es auch möglich!Bloß es wird zu aufwendig und was der W3 Valider sacht, naya. ;)

Ich bin generell ein JS verfechter: Von vielen Usern deaktiviert + Sicherheitslücken.

Nicht das Jeder JAVA aktiviert hätte...

4

Freitag, 24. September 2010, 11:36

Aber jede moderne Homepage da draußen nutzt .js, oder etwa nicht?!

Ich selbst benutze Joomla und darin finde ich jede Menge .js-Dateien.
Und wenn ich eine bestimmte Methode erzeugen will, sei es allein das Menü, dass herunterklappt, wenn man mit der Maus drauf ist, wird .js benötigt. Wie soll ich also einen Bogen drumherum machen?

Und .js ist doch Java oder nicht? Sind solche .js Dateien nun serverseitig oder clientseitig? Da bin ich etwas verwirrt.
Um .js Datein abzuspielen, braucht der Client doch kein Java-Applet zu starten, denn wozu besitzt Joomla solche .js Framework?
Spoiler
2 Projekte am Laufen!
RYUGAN - Beat'emUp
ProjectX - Thriller
zum Lesen den Text mit der Maus markieren
:beach:

5

Freitag, 24. September 2010, 12:00

JS ist die Abkürzung für Javascript. Das ist ein textfile, das Javascriptcode enthält. Javascript ist, wie gesagt, clientseitig, und Java serverseitig. Java und javascript haben übrigens außer ihrer Übereinstimmung der 4 Buchstaben nix miteinander zutun.

Javascript ist in jedem Broweser enthalten, wird aber teilweise etwa sunterschiedlich interpretiert.

Edit: Das, was genocide dir als Links gegeben hat sollten dir weiterhelfen.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Alexis Hiemis« (24. September 2010, 12:51)


Motto: ich bin der brennende schinken

  • Nachricht senden

6

Freitag, 24. September 2010, 12:14

http://de.selfhtml.org/html/attribute/ev….htm#uebersicht
http://www.elated.com/articles/javascrip…nd-setinterval/
Villeicht helfen dir diese beiden links, dort siehst du wie man seine Elemente mit Actionen bestücken kann und auch functionen automatisch abspielen kann.
Der rest wäre easy going wie in java.
;( :jagen:

7

Freitag, 24. September 2010, 13:33

Vielen Dank.

Ich habe momentan ein heftiges Know-How Problem.
Füge ich .js scripte in meiner .php-Datei wie z.B header ein oder muss ich .js-scripte seperat in einer datei.js packen, diese irgendwo auf dem server hochladen und dann von header.php abrufen?

Wenn das zweite betrifft, wie heißt der Code dazu, der ein .js-Datei abruft, damit dieser seine Funktion ausübt, wenn irgendwo, irgendwas angeklickt wurde? Da scheitere ich momentan ziemlich.


Zitat

Der rest wäre easy going wie in java.
Für mich alles andere als easy-going. Ich bekomme es nicht mal hin ein DIV von Punk A nach B zu bewegen.
Spoiler
2 Projekte am Laufen!
RYUGAN - Beat'emUp
ProjectX - Thriller
zum Lesen den Text mit der Maus markieren
:beach:

Motto: ich bin der brennende schinken

  • Nachricht senden

8

Freitag, 24. September 2010, 15:47

In die <head> tags:
<script type="text/javascript" src="DATEI_PFAD"></script>
Oder halt ohne zusätzliche .js datei:
<script type="text/javascript">
function xyz(parameter1, parameter2, parameterX ){}
</script>
Aufruf der funktion dann über: xyz(1,2,3);
Oder auch: javascript:xyz(1,2,3)
;( :jagen:

9

Freitag, 24. September 2010, 19:15

Hi, also so wie ich jetzt deinen Beitrag verstanden habe, muss ich folgendes tun:

1)
.js Datei erstellen mit dem Inhalt:
[php]<script type="text/javascript">
function xyz(parameter1, parameter2, parameterX ){}
</script>[/php]

2)
Die .js Datei irgendwo auf dem Server hochladen.

3)
Im Header-Bereich meines Template-Index rufe ich die Datei ab, welche dann einsatzbereit ist:
<script type="text/javascript" src="DATEI_PFAD"></script>

4)
Um die Funktion aufzurufen, folgender Code:
javascript:xyz(1,2,3)

Jedoch, wie vereinbare ich diese mit den in meine HTML vorhanden Codes?

Das sind Buttons, die bei einem Klick javascript laufen lassen sollen:
[php]<div id="nav-bar">
<div id="selector-button1">Button1</div>
<div id="selector-button2">Button2</div> </div>[/php]

Und das sind die Menüs, um die es dabei geht. Die durch Javascript rauf und runterklappen sollen:
[php]<div class="" id="button1-menu" style="left: 238px; height: 0px;">
<div class="" id="button2-menu" style="left: 238px; height: 0px;">[/php]

Wenn ich mir aber deinen Javascript anschaue, fehlt doch jeder Bezug zu <div id=button1-menu.


Sorry...aber wie gesagt, bin java-anfänger. Ein vorgefertigter Code wäre nicht schlecht, die ich dann nur einfügen müsste.


Wer es bildhaftig haben möchte, dem kann ich diesen Link hier geben: klick mich
Um den Toolbar unten geht es.
Habe die CSS und HTML Codes übernommen, aber verstehe nicht, wie sie da mit dem rauf und runterklappen hingekriegt haben.



EDIT:

Also ich habe HTML CSS und Javascript vorbereitet.
Jedoch klappt es nicht mit dem javascript. Ich weiß nicht so recht, wo der Fehler liegt, dass auf der Seite keine Reaktion stattfindet.

Ich poste hier lieber die gesamten Codes:

1)
In Head-Bereich habe ich eingefügt:
[PHP]<script type="text/javascript" src="http://mysite.de/demo.js"></script>[/PHP]2)
HTML (habe ich im footer meines Templates eingefügt:
[PHP]<?php
/* Toolbar*/ ?>
<div id="nav-bar-toolbar">

<img src="http://www.html.de/images/logo.png" id="logo-img-toolbar" alt="LOGO" />
<div id="selector-templates-toolbar">Button1</div>
<div id="selector-extensions-toolbar">Button2</div>

</div>

<div id="templates-hide-toolbar" class="unvisible-toolbar">
<div id="list-templates-toolbar">
<div class="column-toolbar">

<h2>Text</h2>

</div>
</div>
</div>[/PHP]3)
Javascript (habe ich als demo.js abgespeichert und in meinem Joomla-Root hochgeladen)
[PHP]window.addEvent("domready",function(){
var templates = $('templates-hide-toolbar');
var templatesWrap = $('list-templates-toolbar');
var extensions = $('extensions-hide-toolbar');
var extensionsWrap = $('list-extensions-toolbar');
var templateSelector = $('selector-templates-toolbar');
var extensionSelector = $('selector-extensions-toolbar');
var iframe = $('loader-toolbar');
var navbar = $('nav-bar-toolbar');
var mouseOverTemplates = false;
var mouseOverExtensions = false;
var tooltip = $('tooltip-toolbar');
var submenuFx = [];
var submenuItems = $$('ul.submenu li-toolbar');
var mouseOverSubmenu = [];

if(!window.opera){
iframe.setStyle("height",(window.getHeight()-48)+"px");
}else{
iframe.setStyle("height",(navbar.getCoordinates().top)+"px");
}

iframe.src = (toLoad != 'null') ? toLoad : $$('ul.thumbs li a')[0].href;

templates.setStyle("left",templateSelector.getCoordinates().left - 1);
extensions.setStyle("left",templateSelector.getCoordinates().left - 1);

$$('.list-submenu').each(function(el,i){
submenuFx = new Fx.Tween(el,{duration:300});
submenuFx[i].start("width",0);
(function(){el.setProperty("class","list-submenu");}).delay(50);
mouseOverSubmenu[i] = false;
});

submenuItems.each(function(el,i){
el.addEvent("mouseenter",function(){
submenuFx.each(function(elm,j){
if(j == i) {
elm.start("width",242);
}
else{
elm.start("width",0);
}
});

if(i == 0){
$$('.list-submenu')[i].setStyle("left",el.getPosition().x + 50 + "px");
$$('.list-submenu')[i].setStyle("top",($$('ul.submenu li')[0].getPosition().y-42)+"px");
}else{
$$('.list-submenu')[i].setStyle("left",el.getPosition().x + 50 + "px");
$$('.list-submenu')[i].setStyle("top",($$('ul.submenu li')[0].getPosition().y+8)+"px");
}
});

el.addEvent("mouseleave",function(){
(function(){
if(!mouseOverSubmenu[i]) submenuFx[i].start("width",0);
}).delay(50);
});
});

$$('.list-submenu').each(function(el,i){
el.addEvent("mouseenter", function(){
mouseOverSubmenu[i] = true;
});

el.addEvent("mouseleave", function(){
mouseOverSubmenu[i] = false;
submenuFx[i].start("width",0);
});
});

/*$$('ul.submenu').addEvent("mouseleave",function(){
mouseOverSubmenu.each(function(elm,i){
if(!elm) submenuFx[i].start("width",0);
});
});*/

var tmplFx = new Fx.Tween(templates,{duration:300,transition:Fx.Transitions.Quart.easeInOut});
var extFx = new Fx.Tween(extensions,{duration:300,transition:Fx.Transitions.Quart.easeInOut});
tmplFx.start("height",0);
extFx.start("height",0);
(function(){
templates.removeProperty("class");
extensions.removeProperty("class");
}).delay(100);

templateSelector.addEvent("click", function(){
if(!mouseOverTemplates){
tmplFx.start("height",templatesWrap.getSize().y);
mouseOverTemplates = true;
extFx.start("height",0);
mouseOverExtensions = false;
}else{
tmplFx.start("height",0);
mouseOverTemplates = false;
}
});

extensionSelector.addEvent("click", function(){
if(!mouseOverExtensions){
extFx.start("height",extensionsWrap.getSize().y);
tmplFx.start("height",0);
$$('.list-submenu').fireEvent("mouseleave");
mouseOverExtensions = true;
mouseOverTemplates = false;
}else{
extFx.start("height",0);
mouseOverExtensions = false;
}
});

$$('ul.thumbs li a').each(function(el){
el.getParent().addEvent("mouseenter", function(e){
var tooltip_content = el.getParent().getElement(".unvisible")
if(tooltip_content){
tooltip.innerHTML = tooltip_content.innerHTML;
tooltip.removeProperty("class");
tooltip.setStyle("left",el.getPosition().x+100+"px");
tooltip.setStyle("top",e.page.y-190+"px");
}
});

el.getParent().addEvent("mouseleave", function(e){
tooltip.setProperty("class","unvisible");
tooltip.setStyle("left","-10000px");
});
});

$$('ul.thumbs li a').each(function(el){
el.getParent().addEvent("click", function(e){
e.stop();
iframe.src = el.getProperty("href");
tmplFx.start("height",0);
$$('.list-submenu').fireEvent("mouseleave");
extFx.start("height",0);
mouseOverTemplates = false;
mouseOverExtensions = false;
});
});

$$('#list-extensions a').each(function(el){
el.getParent().addEvent("click", function(e){
e.stop();
iframe.src = el.getProperty("href");
tmplFx.start("height",0);
$$('.list-submenu').fireEvent("mouseleave");
extFx.start("height",0);
mouseOverTemplates = false;
mouseOverExtensions = false;
});
});

$(document.body).addEvent("click",function(e){
if(e.target != templateSelector && e.target != extensionSelector){
tmplFx.start("height",0);
$$('.list-submenu').fireEvent("mouseleave");
extFx.start("height",0);
mouseOverTemplates = false;
mouseOverExtensions = false;
}
});
});[/PHP]

Hoffe das macht die Zusammenarbeit mit euch einfacher
[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
Spoiler
2 Projekte am Laufen!
RYUGAN - Beat'emUp
ProjectX - Thriller
zum Lesen den Text mit der Maus markieren
:beach:

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »IArts« (24. September 2010, 18:59)


10

Freitag, 24. September 2010, 19:22

Ich hatte jetzt ehrlich gesagt keine Lust den Javscript-Code durchzusehn (etwas viel Code nur für die Animation), aber hast du die url denn angepasst?
[php]<script type="text/javascript" src="http://mysite.de/demo.js"></script>[/php]


http://mysite.de/demo.js muss ersetzt werden, würde sowieso nen relativen Link angeben.



.Leo

11

Freitag, 24. September 2010, 20:28

Welchen Unterschied macht es denn, ob http://mysite.de/demo.js oder /demo.js?

Entweder mein Javascript ist falsch oder sie stehen nicht in Relation, weil ich den Javascript per HTML falsch aufrufe oder gar nicht aufrufe! Vllt liegt der Fehler darin, dass in dem Code...

[php] Button1[/php]


...also in den Buttons kein Bezug zu Javascript genommen wird?
Ich wäre jetzt sehr abhängig, was ihr dazu meint.

Zitat

(etwas viel Code nur für die Animation)
Ja das stimmt. Weil in dem Code noch einiges mehr animiert wird.
Müsste ich eines Tages kürzen.
Spoiler
2 Projekte am Laufen!
RYUGAN - Beat'emUp
ProjectX - Thriller
zum Lesen den Text mit der Maus markieren
:beach:

Motto: ich bin der brennende schinken

  • Nachricht senden

12

Freitag, 24. September 2010, 21:39

Generell lässt sich JS das bei maus druck ausgeführt werden soll so ausführen:
<div id="selector-button1" onclick="xyz();">Button1</div>
Wenn du jetzt danach gefragt hast.
;( :jagen:

13

Samstag, 25. September 2010, 11:59

Hallo,
uff hier gehts ja kreuz und quer zu. Ich versuche erstmal die ganzen Begriffe zu definieren, damit jeder weis, worum es geht.

PHP
Wird auf dem Server ausgeführt, kann deswegen logischerweise mit der Datenbank oder Dateien arbeiten. Der Nutzer ruft mit seinem Browser eine PHP-Seite auf, dadrauf hin, werden die PHP-Anweisungen/Code ausgeführt und alles was per echo/print/.... rauskommt wird an den Browser geschickt, wie eine Uhrzeit oder die TOP5 der Benutzer.

HTML
Auszeichnungssprache, die vom Browser ausgeführt wird. Er bekommt die HTML-Befehle wie <h1>Überschrift</h1> und stellt sie entsprechend dar. Wir haben folgendes PHP-Script:

Quellcode

1
<html><body><h1><?php print date('r'); ?></body></html>

Dank des PHP-Interpreter bekommt der Browser:

Quellcode

1
<html><body><h1>Thu, 21 Dec 2000 16:01:07 +0200</h1></body></html>

und stellt es dar.

Java
Eine Programmiersprache von SUN, kann mit Hilfe von Applets im Browser laufen, dabei hat es seinen eigenen Bereich in einer Webseite läuft und völlig automar arbeitet. Sprich es ist nicht ohne weiteres eine Interaktion mit der Webseite möglich

JavaScript
!= Java. Clientseitige Programmiersprache, die im Browser läuft, oder auch nicht, jenachdem wie der Browser eingestellt ist/es versteht. Kann vollständig mit einer Webseite interagieren und Elemente vom Server nachladen, oder die Webseite anpassen, oder .....

CSS
Formatierungssprache für HTML-Dateien, wird auch von Browser ausgeführt. Damit kann man relativ einfach komplexe Layouts bauen, es erweitert die HTML-Elemente um Formierungangaben, wie Setze Rand unten 5px gestrichelt mit der Farbe blau und wenn die Maus drüber ist, setze den Hintergrund auf gelb oder färbe alle ungeraden Elemente einer Liste blau ein.

Weitere Infos -> Wikipedia/Google/selfhtml

Dein Problem
Du willst ein Element einblenden, wenn etwas angeklickt wird, dazu eigl. sich am besten JavaScript. Joomla verwendet das JavaScript-Framework MooTools, damit kannst du dann einfach sagen, wenn auf Button X geklickt, wende auf Element Y folgende Animation an. (fade) Dazu brauch man keinen Server, da alles der Browser tut. Jetzt ist die Frage, wie fest bist du in Javascript/Html/CSS?

Sonstiges
- Wenn du den Code von der Seite benutzen willst, wieso studierst du ihn nicht, kopierst ihn und passt ihn an? (Helfen sollten auch die Entwicklerwerkzeuge, IE:Web Development Tools, FF: firebug, Opera: schon integriert, Safari/Chrome: Entwicklermodus aktivieren.

@Der Schakal
wenn man keine Animation braucht, kann man mit mouse:over und css es wunderbar und valide hinbekomme ;)

@Alexis Hiemis
Java, in einem Applet, wird Clientseitig ausgeführt der Server liefert bloß die Daten, aber man kann mit zB im TomCat-Container auch Java serverseitig ausführen, dann geniert es aber auch nur html/css, halt ne php alternative.

@IArts
"Sorry...aber wie gesagt, bin java-anfänger. Ein vorgefertigter Code wäre nicht schlecht, die ich dann nur einfügen müsste."
Sußer, der Lerneffekt ist gleich Null. Und wie oft noch, Java != Javascript für dieses Programm ist Java zuviel und nicht wirklich zielführend.

@IArts2
Nimm MooTools, wenn die Funktion aufgerufen wird, änder bloß den Zustand
Fade In:
$('my_div').setStyle('display', 'block');
$('my_div').fade('in');

Fade Out:
$('my_div').fade('out');
$('my_div').setStyle('display', 'none');

my_div musste anpassen, für Fragen zu fade, schau in die Doku von mootools.

"Welchen Unterschied macht es denn, ob http://mysite.de/demo.js oder /demo.js?"
-> http://de.selfhtml.org/html/allgemein/referenzieren.htm

Grüße Steve
:information: YAams
:rainbow: Random Signatur
Bild





Weitere Informationen | Download
Mit Support für RGSS Project 1!
Bild

14

Donnerstag, 30. September 2010, 15:11

Hi,

erstmal ein dickes Dankeschön an jeden, der mich hier unterstützt hat.
Ihr seid ohne Übertreibung spitze!

Ich habe mein JavaScript studiert, verbessert und lauffähig gemacht.
Die Animation folgt per Mootools = xyzFx.start("height",40);

Jetzt versuche ich Cookies zu setzen, damit sich meine Seite jedes mal erinnert, ob beim jeweiligen Nutzer das Menü
runter oder hochgeklappt war, um diesen jeweiligen Zustand so zu laden.

Hauptsächlich soll entweder True oder False gespeichert werden.
Cookies erzeugt man durch document.cookie = 'name=wert;';
Alles schön und gut, nur weiß ich nicht, wie ich das in meinem Javascript einbinden soll.
Jeder Versuch hat gescheitert.

Um meinen Code verständlich, jedoch kurz und knackig zu halten:

Wenn ein Besucher zum erstenmal eine Seite besucht, dann sind vorgegebene Variablen false. Zunächst wird überprüft, ob eine bestimmte Variable True oder False ist:
[php]if (mouseOverTaskleiste == true){}
else{
var mouseOverTaskleiste = false;} [/php]

Weiter unten, wird je nach True oder False das Menü hoch oder runtergeklappt.
Da am Anfang noch False ist, klappt er hoch:
[php]if(mouseOverTaskleiste == false){
tskFx.start("height",600);}
else{tskFx.start("height",0);} [/php]

Durch einen Button wird wird die Variable True/False geschaltet:
[php]taskleisteSelector.addEvent("click", function(){
if(!mouseOverTaskleiste){
tskFx.start("height",0);
mouseOverTaskleiste = true;
}else{
tskFx.start("height",600);
mouseOverTaskleiste = false;
} [/php]

Rein technisch klappt ja alles wunderbar. Aber die Werte True und False gehen jedes mal verloren, sobald die Seite neugeladen wird.
Ich weiß leider nicht wie und wo ich Cookies für dieses Beispiel setzen soll.

Habe auch versucht per Mootools es zu verwirklich da es kürzer und einfacher ist.
Aber in beiden Fällen scheitert es an der Umsetzung. :(

Wenn mir da jemand bei dem Code hilft, wäre ich im sehr dankbar.
Spoiler
2 Projekte am Laufen!
RYUGAN - Beat'emUp
ProjectX - Thriller
zum Lesen den Text mit der Maus markieren
:beach:

Social Bookmarks