Tabelle als Tooltip in Exportdatei


#1

Hallo,

ich benutze in meiner Export-Konfigurationsdatei - wie einige andere auch, wie im Export-Archiv zu sehen - das Javascript html_tangerine_popup.js zur Anzeige von Tooltips. Das Script liegt in einer eigenen Datei, die zugehörigen css-Dateien benutze ich nicht.

Das Anzeigen von Tooltips klappt wunderbar, solange es sich um simplen Text handelt. Versuche ich hingegen, eine Tabelle (Definition she. unten) anzeigen zu lassen, geht's schief. Der HTML-Aufruf sieht wie folgt aus:

Tabellenelement-Text

Die Tabelle ist folgendermaßen definiert:

<tr<tr<tr<tr<tr
Brenngeschwindigkeit: 6xBurn Engine: GoldenhawkASPI Treiber: SystemBurn Proof: jaBoost (Stärke): Track 7 (mittel)Normalisierung: ab 15$char(37) Lautstärke in den letzten 20 Millisekunden

Die Tabelle enhält, wie man sieht, keine ' und wird zudem korrekt angezeigt, wenn sie direkt in aufgeführt wird; an der Tabellendefinition scheint es also nicht zu liegen. Auch die Tatsache, daß der Aufruf aus einem Tabellenelement heraus erfolgt, scheint nicht für den Fehler verantwortlich zu sein: ich habe den Aufruf mit >DIV und direkt in plaziert, und es funktioniert ebenfalls nicht.

Merkwürdigerweise muß ich - entgegen der Beschreibung auf www.dynamicdrive.com - die Parameter für ddrivetip in doppelte ' einschließen, sonst klappt schon der Aufruf mit simplem Text nicht.

Ich sehe m Augenblick nur zwei mögliche Ursachen: Entweder das Javascript kommt generell mit Tabellen nicht zurecht, oder der Aufruf ist fehlerhaft.

Ich würde mich freuen, wenn jemand hier im Forum mir weiterhelfen könnte. Schon mal vielen Dank im voraus.

Freundliche Grüße

mumdigau


#2

Ich verschiebe das mal ins Off-Topic, da es mehr ein HTML / JavaScript Problem ist. :slight_smile:


#3

Hallo mumdigau,

Aufruf ist fehlerhaft. :stuck_out_tongue:
In JavaScript sind ' und " Begrenzungen für Strings, und eine Tabelle muss im Aufruf ein langer String sein, d.h. wenn du die Tabelle als "

" aufrufst, musst du jedes Vorkommen von " in der Tabellendefinition mit " ersetzen, damit es als Zeichen und keine Stringbegrenzung angesehen wird.
Der Aufruf muss dan so aussehen:
<td align="left"><a onMouseover='ddrivetip(''<table class=\"tip_table\" style=\"color:#000000; ... </table>'', ''#FFFFFF'', 320)'; onMouseout='hideddrivetip()'>Tabellenelement-Text</a></td>

Das hängt mit Mp3Tag zusammen, ' hat besondere Funktionalität (wie auch z.B. []) und muss doppelt geschrieben werden, wenn es als Zeichen angezeigt werden soll.

Gruß
nickless


#4

@nickless

Danke für Dein Feedback.

Ich bin auch davon überzeugt, daß es am Aufruf liegt. Ich habe Deine Hinweise eingebaut. Leider funktioniert es immer noch nicht. Hier noch einmal ein Auszug aus der Tabelle samt Aufruf:

...
Brenn-Software: <a onMouseover='ddrivetip(''<tr<tr<tr<tr<tr
Brenngeschwindigkeit: 6xBurn Engine: GoldenhawkASPI Treiber: SystemBurn Proof: jaBoost (Stärke): Track 7 (mittel)Normalisierung: ab 15% Lautstärke in den letzten 20 Millisekunden
'', ''#FFFFFF'', 320)'; onMouseout='hideddrivetip()'>Mp3 CD Burner 4.01 Build 113
Brenndatum: 17. September 2005

In der Anlage ist das Ergebnis zu sehen:

Irgendwo muß ja noch ein Fehler stecken. Ich habe mir die Tabelle wiederholt angeschaut, kann aber nichts Auffälliges feststellen.

Ich habe es vor dem

-Aufruf mit
 versucht. Das klappt, ist aber viel zu aufwendig bei der Layout-Gestaltung. Deswegen will ich ja auch 
einsetzen.

FG

mumdigau






#5

...

Mp3 CD Burner 4.01 Build 113

Wie gesagt, ' (Hochkomma) soll nur in der Exportdatei von Mp3Tag mit '' (2 Hochkommas) ersetzt werden.
Die roten "-s oben (fällt mir grade nich ein, wie die heißen :stuck_out_tongue: ) sind eben jeweils 1 Zeichen und keine 2 Hochkommas.
So müsste es eigentlich funktionieren.

Gruß
nickless

Edit:
P.S. Am besten stelle Schriftart im Texteditor auf "Courier New" oder Ähnliches, so kann man '' und " besser voneinander unterscheiden.



#6

@nickless

Hallo,

die von Dir rot markierten "-s sind jeweils zwei Apostrophe ('). Das ist doch richtig so (wegen Mp3tag), oder?

Ich habe jedes Apostroph noch einmal überprüft und keinen Fehler gefunden. Die Definitionen für tip_table und dhtmltooltip sehen ebenfalls unverfänglich aus:

.tip_table {
border: 0px solid #000000;

    background-color: #FFFFFF;
    color: black;
font-size: 8pt;
font-family: Tahoma,Verdana,Arial;
text-align: left;
vertical-align: middle;
margin: 0px;
padding: 2px;

}

#dhtmltooltip{
position: absolute;
width: 150px;
border: 1px solid black;
padding: 1px;
color: black;
background-color: lightyellow;
font-size: 8pt;
font-family: Tahoma,Verdana,Arial;
visibility: hidden;
z-index: 100;
/Remove below line to remove shadow. Below line should always appear last within this CSS/
filter: progid:DXImageTransform.Microsoft.Shadow(color=gray,direction=135);
}

Unter habe ich übrigens keine .dhtmltooltip-Deklaration, sollte auch gem. www.dynamicdrive.com nicht nötig sein.

Vielleicht kann ich Dir ja mal meine .mte-Datei mailen, ist ja nur 6 KB groß.

FG

mumdigau

P.S. Deinen Hinweis bezgl. des Text-Editors habe ich nicht ganz verstanden.


#7

Nicht an der Stelle, das was ich oben gepostet hab, hab ich schon aus dem Ergebnis, also aus HTML rauskopiert (hab vergessen zu sagen :whistling: ), in *.mte muss es natürlich so heißen:

<a onMouseover=''ddrivetip("<table class="tip_table" style="color:#000000; width=320px"><td style="text-align:right; width:70px">Brenngeschwindigkeit:<td style="width:250px"> 6x<tr<td style="text-align:right; width:70px">Burn Engine:<td style="width:250px">Goldenhawk<tr<td style="text-align:right; width:70px">ASPI Treiber:<td style="width:250px"> System<tr<td style="text-align:right; width:70px">Burn Proof:<td style="width:250px"> ja<tr<td style="text-align:right; width:70px">Boost (Stärke):<td style="width:250px"> Track 7 (mittel)<tr<td style="text-align:right; width:70px">Normalisierung:<td style="width:250px"> ab 15%% Lautstärke in den letzten 20 Millisekunden", "#FFFFFF", 320)''; onMouseout=''hideddrivetip()''>Mp3 CD Burner 4.01 Build 113

(Hab ausprobiert, geht)
Rot markierte Zeichen sind jeweils doppelt (Mp3Tag bedingt).
Blau markierte sind einzelne Zeichen.

Ich meine, '' (2 Hochkommas) und " kann man mit einer normalen Schriftart (z.B. hier im Forum) kaum voneinander unterscheiden.


#8

@nickless

Herzlichen Dank, jetzt hat's geklappt.

FG

mumdigau


#9

@nickless

Hallo,

ich melde mich noch mal mit zwei kleinen Zusatzfragen:

  1. Wie erreiche ich , daß ein Apostroph (') als Text ausgegeben wird? Sowohl mit ' als auch mit $char(39) packt ddrivetip das nicht.

  2. Wie gebe ich den Dateipfad des Popup-Scripts (C:...\ html_tangerine_popup.js) in <script an ? Offensichtlich verschluckt sich HTML an den . Weder mit \\, '\ noch mit $char(92) funktionierte es.

Vielen Dank noch mal für Deine Hilfe.

mumdigau


#10

Zu 1: Wie sieht's mit \\' oder \' aus?

Zu 2: Ich glaube, es müsste etwa so heißen:


#11

Zu 1.:
Wenn ' als Stringbegrenzung im HTML-Tag benutzt wird (also blabla) muss man es mit HTML-Entity ersetzen, also mit ' (Liste der Entities ist hier)
' ist für JavaScript gedacht


#12

Hat leider beides nicht funktioniert.

Prima, klappt.

Na ja, so langsam wird's - dank Deiner Hilfe.

mumdigau


#13

Hallo,

als Stringbegrenzung für onMouseover wird das doppelte Anführungszeichen (") eingesetzt. Die einzelnen Parameter für ddrivetip sind in doppelte Apostrophe (') eingeschlossen. Wenn nun der erste Parameter von ddrivetip, der Text-String (hier also die Tabelle, die uns schon so viel Mühe gemacht hat) ein Apostroph (als Text) enthält, geht's schief. Auch Ersetzung durch ' klappt bei mir nicht.

Mache ich immer noch was falsch?

FG

mumdigau


#14

Dann muss man die doppelten Anführungszeichen mit " und die Apostrophe mit ' ersetzen (mit Rücksicht auf Mp3Tag, also für .mte mit <!--coloro:blue-->'') da aber hier 2 HTML-Strings in einem sind ist es besser, für Stringbegrenzungen in den eingeschlossenen Tags Apostrophe zu verwenden (weniger Schreibarbeit).

Beispiel für .mte:
<a onMouseover="ddrivetip(''<table class=<!--coloro:red-->''tip_table<!--coloro:red-->'' style=<!--coloro:red-->''color:#000000; width=320px<!--coloro:red-->''><td style=<!--coloro:red-->''text-align:right; width:70px<!--coloro:red-->''>"Brenngeschwindigkeit":<td style=<!--coloro:red-->''text-align:right; width:70px<!--coloro:red-->''>$replace($replace(%title%,","),'',<!--coloro:red-->'')'', ''#FFFFFF'', 320)"; onMouseout="hideddrivetip()">Mp3

Anführungszeichen sind blau und Apostrophe rot

Gruß
nickless


#15

Hallo,

nochmals herzlichen Dank für deine unermüdliche Hilfe.

Wahrscheinlich habe ich mich mißverständlich ausgedrückt: Wenn ich deinen letzten Vorschlag nehme (ich habe testhalber eine 1.1-Kopie gemacht), kann ich mit &pos; ein Apostroph in den Text des aufrufenden Tabellenelements (hier in MP3) einfügen. Aber das ist nicht, was ich meine. Ich möchte Apostrophe im Popup-Fenster anzeigen lassen (also z.B. im Text, der auf Brenngeschwindigleit folgt). und das klappt weder direkt ('), noch mit ' noch mit &pos;.

FG

mumdigau


#16

:flushed:
Also ich hab noch mal extra 1:1 Kopie gemacht und ausprobiert, bei mir geht's (Screenshot).
Kannst du mal deine .mte-Datei hier posten?
Es kann doch nicht sein, dass es bei mir geht und bei dir nicht! :huh:



#17

Hallo,

meine mte-Datei habe ich in die Anlage gelegt. Es geht um die Popup-Fenster in der Track-Auflistung, die je Track den Songtext anzeigen sollen. (Die mte-Datei ist noch nicht ihrem endgültigen Zustand, da sie z. Zt. für alle Tracks denselben Songtext anzeigt, aber für den Test hier spielt das keine Rolle.) Ich habe mir derzeit dadurch geholfen, daß ich die Apostrophe im Songtext durch ' (Accent aigu) ersetzt habe.

Jetzt bin ich mal gespannt, wo der Fehler steckt.

FG

mumdigau

html_CD_PCM.mte (7.53 KB)


#18

Hm, also der einzige Fehler den ich gefunden hab ist, dass der Pfad zu html_tangerine_popup.js nicht in die Anführungszeichen eingeschlossen war und deswegen die Popups gar nicht angezeigt wurden, egal was drine stand.
Ich hab die Accents mit '' ersetzt und mein letztes Beispiel in die "Modus"-Spalte reinkopiert und es ging gleich.
Hast du vielleicht irgendwas in html_tangerine_popup.js geändert, dass es nicht mehr geht?
Die .mte (so, wie's bei mir geht) hab ich attached.

Gruß
nickless

html_CD_PCM_n.mte (7.96 KB)


#19

Wow, jetzt klappt's!

Es lag nicht an den fehlenden " beim .js-Aufruf, sondern ich hatte im Popup-Text ' statt '' benutzt.

Ich habe sicherheitshalber trotzdem die fehlenden " ergänzt.

Tausend Dank nochmals.

FG

mumdigau