PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Meine liebe Müh' mit JS und Mozilla/Opera


RMC
2005-04-16, 01:31:34
Ich weiß net warum im IE immer alles geht auf Anhieb geht, aber alle andern Browser immer streiken. :ugly:


Wollte mit JavaScript nur den Namen des selektierten Elements aus einer Liste holen mit:


document.getElementById("unit").options[document.getElementById("unit").selectedIndex].name;



gut...geht nur im IE.

Dachte ich mach es etwas anders, hab "name" durch "firstChild.nodeName" ersetzt. Aber auch das bringt nur der IE zusammen. Die anderen streiken bei dem Statement und machen an der Stelle nicht weiter.

Also irgendwas mach ich falsch. :usad: Dass es in diesen Browsern nicht geht will ich nicht annehmen.

Sephiroth
2005-04-16, 01:54:20
Also ein OPTION Element hat eh kein Attribut NAME und daß es beim IE geht, hat nich viel zu bedeuten ...

Zeig doch mal bitte den vollständigen Code (HTML & JS).

RMC
2005-04-16, 10:33:21
Ok..hat sicher erledigt:

Es war nicht nodeName, sondern nodeValue...eh klar...:usad:
Dass der IE dann aber "name" akzeptiert ist auch nicht grad toll.


Danke trotzdem!

RMC
2005-04-16, 16:26:57
Ok hm..wenn wir schon dabei sind:

Ich möchte per JS die URL eines Bildes dynamisch ändern. Funktioniert aber auch nur im IE ;(
Ich weiß nie was ich ändern soll, damit es auch bei den anderen geht. Meines Erachtens nach sollte es rein logisch funktionieren, aber wie immer nur 1/3 Trefferquote bei den Browsern.


function generate_preview (image)
{
var thumb = document.getElementById('pic_preview');

if (image != "")
{
thumb.attributes['src'].value = image;
}
}


btw in "image" steht ein Pfad, den ich schon kontrolliert hab. Ist einfach der Wert eines <input type="file"> Elements. IDs stimmen, HTML auch. Das ist nicht das Problem.

Vorher hatte ich "thumb.src"...was auch nichts gebracht hatte.

Sephiroth
2005-04-16, 17:06:45
Also wenn thumb.src = "neues_bild.jpg" nicht geht (was ich mir nicht vorstellen kann), dann könntest du
thumb.setAttribute('src','neues_bild.jpg'); probieren

Dein thumb.attributes['src'].value = image; müsste korrekterweise thumb.attributes['src'].nodeValue = image; lauten.

RMC
2005-04-16, 17:41:36
Hm funktioniert leider alles nicht. D.h. das Bild bleibt gleich, müsste aber doch ausgetauscht werden. Oder ist dazu irgendeine Art von Reload notwendig? Im IE nämlich nicht.

Sephiroth
2005-04-16, 17:50:08
Hm funktioniert leider alles nicht. D.h. das Bild bleibt gleich, müsste aber doch ausgetauscht werden. Oder ist dazu irgendeine Art von Reload notwendig? Im IE nämlich nicht.
Dann kann der Fehler nur woanders liegen.

mithrandir
2005-04-18, 08:21:02
Dere!

Genau, der Fehler muss woanders liegen. Hier funktioniert's ja auch (frei nach SelfHTML):
http://staff.withingames.net/mithrandir/test_img_script/

<script type="text/javascript">
<!--
normalImg = new Image();
normalImg.src = "image1.gif";

highlightImg = new Image();
highlightImg.src = "image2.gif";

function changeImage( number, object )
{
window.document.images[ number ].src = object.src;
}
-->
</script>
UND

<a href="index.html"
onMouseOver="changeImage(0, highlightImg);"
onMouseOut="changeImage(0, normalImg);">
<img src="image1.gif" border="0" alt="Ein Bild">
</a>
bye, mith

RMC
2005-04-18, 11:56:56
Es soll jetzt aber kein Button sein (Ändern eines Bildes bei Maus-Events) sondern es soll eine Vorschau generiert werden von einem Bild, das man mit dem File-Dialog ausgewählt hat (über das HTML-Element <input type=file>).

Die URL des neuen Bildes wird der Funktion als Parameter übergeben.


function generatePreview (image_url)
{
var thumb = document.getElementById('pic_preview');

var preview_image = new Image();
preview_image.src = image_url;

if (image_url != "")
{
thumb.src = preview_image.src;
}
}



Erklärung:

pic_preview ist ein Image-Tag im HTML Text, welches das Bild anzeigen soll. Standardmäßig hat es ein Bild mit der Aufschrift "Kein Bild gefunden" :rolleyes:

In "image_url" steht der Pfad des über das HTML-Elements ausgewählten Bildes. Das Ziel ist es, dass pic_preview diesen Wert annimmt und dem User zeigt, welches Bild er ausgewählt hat.


Der HTML-Code ist soweit richtig. Es geht ja im IE, die URL wird auch richtig übergeben, nur die anderen Browser zeigen es nicht an. Ergo liegt es an der JS-Funktion.

clm[k1]
2005-04-18, 12:19:14
Es soll jetzt aber kein Button sein (Ändern eines Bildes bei Maus-Events) sondern es soll eine Vorschau generiert werden von einem Bild, das man mit dem File-Dialog ausgewählt hat (über das HTML-Element <input type=file>).

Die URL des neuen Bildes wird der Funktion als Parameter übergeben.


function generatePreview (image_url)
{
var thumb = document.getElementById('pic_preview');

var preview_image = new Image();
preview_image.src = image_url;

if (image_url != "")
{
thumb.src = preview_image.src;
}
}



Erklärung:

pic_preview ist ein Image-Tag im HTML Text, welches das Bild anzeigen soll. Standardmäßig hat es ein Bild mit der Aufschrift "Kein Bild gefunden" :rolleyes:

In "image_url" steht der Pfad des über das HTML-Elements ausgewählten Bildes. Das Ziel ist es, dass pic_preview diesen Wert annimmt und dem User zeigt, welches Bild er ausgewählt hat.


Der HTML-Code ist soweit richtig. Es geht ja im IE, die URL wird auch richtig übergeben, nur die anderen Browser zeigen es nicht an. Ergo liegt es an der JS-Funktion.

Öhm, das bild was per <input type=file> ausgewählt wird, wird aber schon hochgeladen, oder?

Wenn nicht, ist das problem doch klar: der IE ist der einzige browser, der unsicher genug sein kann, um zu erlauben, das eine seite elemente auf dem eigenen rechner einbindet!

...oder hab ich jetzt an deiner ausführung was nicht verstanden?
(was nicht verwunderlich wäre, da du es ja nur für nötig hälst diese eine JS-funktion zu posten)


just my 2 cent
clm[k1]

RMC
2005-04-18, 12:44:52
']Öhm, das bild was per <input type=file> ausgewählt wird, wird aber schon hochgeladen, oder?

Nein noch nicht...es soll ja angezeigt werden welches man gewählt hat, noch vor dem Hochladen.

Ok...gibt es Bedenken bei der Sicherheit wenn man ein lokales Bild im Browser anzeigt? Gibt es das in Opera/Mozilla generell nicht?

Gäbs dann eine andere Möglichkeit das zu realisieren?

Sephiroth
2005-04-18, 12:54:52
so schauts wohl aus
RMC, schau dir image_url doch mal an, wenn das file-Protokoll verwendet wird (also file:// statt http://), dann ist es auch kein wunder. (muß ich nacher mal beim IE testen)
WIrd das Bild hochgeladen, dann mußt deine funktion nur den Namen des Bildes grabben und dann eben den Pfad ergänzen (du wirst ja sicher wissen wo die Bilder hochgeladen werden sollen).
:| (ich sollte eher auf absenden klicken)

p.s.
mehr zeilen bedarf es nicht ;)

function generatePreview (image_url){
var erg = image_url.search(/^http:\/\//);
if (erg >= 0)
document.getElementById('pic_preview').src=image_url;

}


Ok...gibt es Bedenken bei der Sicherheit wenn man ein lokales Bild im Browser anzeigt? Gibt es das in Opera/Mozilla generell nicht?
Das geht nur, wenn auch die HTML Datei lokal ausgeführt wird.

RMC
2005-04-18, 15:11:24
so schauts wohl aus
RMC, schau dir image_url doch mal an, wenn das file-Protokoll verwendet wird (also file:// statt http://), dann ist es auch kein wunder. (muß ich nacher mal beim IE testen)
WIrd das Bild hochgeladen, dann mußt deine funktion nur den Namen des Bildes grabben und dann eben den Pfad ergänzen (du wirst ja sicher wissen wo die Bilder hochgeladen werden sollen).
:| (ich sollte eher auf absenden klicken)
Das geht nur, wenn auch die HTML Datei lokal ausgeführt wird.

Versteh ich nicht ganz. Die URL ist einfach ein lokaler Pfad vom Rechner des Benutzers aus, welche ca. so aussieht:

"C:\Bilder\Meinbild.jpg"

Da gibts kein http:// davor und kein file:///

:confused:

Wenn die Datei nur lokal ausgeführt wird bringt das nix, das is eh klar ;)

Sephiroth
2005-04-18, 17:03:44
Versteh ich nicht ganz. Die URL ist einfach ein lokaler Pfad vom Rechner des Benutzers aus, welche ca. so aussieht:

"C:\Bilder\Meinbild.jpg"

Da gibts kein http:// davor und kein file:///

:confused:

Wenn die Datei nur lokal ausgeführt wird bringt das nix, das is eh klar ;)
Mit der URL beantwortet sich deine Frage danach, warum es nicht ...

was soll denn "C" für ein Protokoll sein, wird sich der Browser (außer der IE X-() fragen :eyes:

nochmal im kurzen:
http oder https muß davor stehen (also als Protokoll), sonst wird dat nüscht

RMC
2005-04-18, 17:51:37
Hm ok. D.h. ich muss meinen Pfad der Form "C:\folder1\folder2\bild.jpg" auf zb "file:///C:\folder1\folder2.." bringen?
Hab das grad probiert...geht nur im IE :(

Oder hast du was anderes gemeint?


function generatePreview (image_url){
var erg = image_url.search(/^http:\/\//);
if (erg >= 0)
document.getElementById('pic_preview').src=image_url;
}


Was macht das genau? Check das net so ganz.

Sephiroth
2005-04-18, 23:49:55
Hm ok. D.h. ich muss meinen Pfad der Form "C:\folder1\folder2\bild.jpg" auf zb "file:///C:\folder1\folder2.." bringen?
Worauf ich hinaus will ist, daß die Datei erst auf einen (deinen?) Webspace geladen werden muß, sonst geht das so nicht - jedenfalls nicht mit anderen Browser als dem Internet Explorer.

Was macht das genau? Check das net so ganz.
Das prüft mittels eines regulären Ausdrucks, ob die URL mit "http://" beginnt und wenn dem so ist, dann wird die URL eben deinem Vorschau Element zugewiesen.

RMC
2005-04-19, 00:16:28
Worauf ich hinaus will ist, daß die Datei erst auf einen (deinen?) Webspace geladen werden muß, sonst geht das so nicht - jedenfalls nicht mit anderen Browser als dem Internet Explorer.

ok...

Aber das ist ja genau NICHT das was ich will *g* Die Datei SOLL ja im Vorhinein angezeigt werden, und nachher hochgeladen werden (das Hochladen funktioniert schon - mit PHP).

Na gut...dann geht das nicht...hm k, hat sich erledigt :( Schade, wär ein schönes Feature gewesen.

zeckensack
2005-04-19, 00:54:19
Korrekte Syntax für lokale URLs:
file://localhost/E:/Testing/Upload/clickme.png

RMC
2005-04-19, 10:18:45
Danke.

Hm die Javascript Console von Firefox gibt mir eh eine Security-Warnung aus wenn ich von file://localhost/ verlinken will :(