Change #11

JavaScript-Problem in map2.tpl

Added by following almost 6 years ago. Updated over 3 years ago.

Status:erledigt% Done:

100%

Priority name:2 mittel
Assignee:following
Target version:Version 14
Ticket Referenz: Kategorien:karte

Description

Mehrere mobile Browser scheinen Probleme mit den folgenden beiden Codezeilen in map2.tpl zu haben:

sHtml += "<tr><td><img src='resource2/ocstyle/images/cacheicon/20x20-" + nTypeId + ".png' alt='" + xmlentities(sTypeText) + "' title='" + xmlentities(sTypeText) + "' height='20px' width='20px'/></td><td style='min-width:150px";
sHtml += "<tr><td colspan='2' style='vertical-align:top;'>{t escape=js}by{/t} <a href='viewprofile.php?userid=" + encodeURI(nUserId) + "' target='_blank'>" + xmlentities(sUsername) + "</a></td><td align='right'><a class='nooutline' href='articles.php?page=cacheinfo#difficulty' target='_blank'><img src='resource2/{$opt.template.style}/images/difficulty/diff-" + String(nDifficulty*10) + ".gif' border='0' width='19' height='16' hspace='2' onmouseover='Tip(\"{t}Difficulty{/t}: " + String(nDifficulty) + " {t}of{/t} 5\", DELAY, 0, FADEIN, false, FADEOUT, false, BGCOLOR, \"#fffedf\", BORDERCOLOR, \"grey\")' onmouseout='UnTip()' /><img src='resource2/{$opt.template.style}/images/difficulty/terr-" + String(nTerrain*10) + ".gif' border='0' width='19' height='16' hspace='2' onmouseover='Tip(\"{t}Terrain{/t}: " + String(nTerrain) + " {t}of{/t} 5\", DELAY, 0, FADEIN, false, FADEOUT, false, BGCOLOR, \"#fffedf\", BORDERCOLOR, \"grey\")' onmouseout='UnTip()' /></a></td></tr>";

Das äußert sich dann darin, dass Bild-URLs nicht stimmen und z.B. Folgendes versucht wird, vom Webserver abzurufen:

resource2/ocstyle/images/cacheicon/20x20-" + nTypeId + ".png
resource2/ocstyle/images/difficulty/terr-%22%20+%20String(nTerrain*10)%20+%20%22.gif

Bug im OC-JavaScript-Code, oder im Browser?

Associated revisions

Revision 6d8c528e
Added by following over 3 years ago

added workaround for JavaScript parsing errors; updates #11

Revision 1a728245
Added by following over 3 years ago

Revert "added workaround for JavaScript parsing errors; updates #11"

does not solve the problem

Revision ebcdfaba
Added by following over 3 years ago

added another workaround for JavaScript parsing errors; updates #11

History

#1 Updated by following almost 6 years ago

  • Tracker changed from Change to Bug

#2 Updated by following almost 6 years ago

  • Kategorien set to karte

#3 Updated by cmanie almost 6 years ago

Ist ein Browsertyp bekannt, bei dem das reproduzierbar ist?

#4 Updated by bohrsty almost 6 years ago

ich weiss nicht all zu viel ueber javascript, aber anfuehrungszeichen (") und hochkommata (') werden da sehr komisch behandelt...

ich weiss nicht wie es korrekt waere (also nach javascript-standard), aber der browser bei dem der fehler auftritt interpretiert offenbar die inneren hochkommata als "feste" kapselung und ignoriert die anfuehrungszeichen...
sHtml += "<tr><td><img src='resource2/ocstyle/images/cacheicon/20x20-" + nTypeId + ".png' alt='" + xmlentitie...

vielleicht kommt man hier mit escapement weiter, falls javascript das vorsieht...

#5 Updated by cmanie almost 6 years ago

bohrsty schrieb:

ich weiss nicht all zu viel ueber javascript, aber anfuehrungszeichen (") und hochkommata (') werden da sehr komisch behandelt...

Eigentlich nicht. Laut ECMA-Script-Standards ist beides erlaubt:

A string literal is zero or more characters enclosed in single or double quotes.

Bezüglich der enthaltenen Zeichen gibt es nur wenige Einschränkungen (anders beispielsweise als in PHP):
  • in doublequoted Strings sind keine Doubleqoutes erlaubt (logisch)
  • in singlequoted Strings sind keine Singlequotes erlaubt (auch logisch)
  • in beiden sind die Einzelzeichen \ und Linebreaks (nicht zu verwechseln mit dem escaped Linebreak \n) nicht erlaubt
    Die Frage wird letztendlich sein: Wer war zuerst da.

vielleicht kommt man hier mit escapement weiter, falls javascript das vorsieht...

Das wäre wohl eine Möglichkeit.
Da es aber in den meisten Browsern funktioniert tippe ich auf ein browserspezifisches Problem.
Daher wäre es interessant zu wissen, in welchem Browser man das reproduzieren kann. Irgendjemand muss das doch herausgefunden bzw. gemeldet haben.

#6 Updated by following almost 6 years ago

Die Meldung stammt von mir; ist mir beim Auswerten von Apache-Logfiles aufgefallen.

Hier ein paar Browser, bei denen es in den letzten Tagen aufgetreten ist:

  • Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E)
  • Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
  • Mozilla/5.0 (Windows NT 6.1; rv:18.0) Gecko/20100101 Firefox/18.0
  • Mozilla/5.0 (iPod; CPU iPhone OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B144 Safari/8536.25
  • Mozilla/5.0 (Linux; U; Android 4.1.2; de-de; A511 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30
  • Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.2.15) Gecko/20110303 Ubuntu/10.04 (lucid) Firefox/3.6.15

Also nicht nur mobile Browser wie oben vermutet sondern querbeet.

#7 Updated by following over 3 years ago

  • Status changed from offen to in Arbeit
  • Assignee set to following
  • Target version set to Version 14

#8 Updated by following over 3 years ago

Ich versuch's mal mit Escaping wie von bohrsty vorgeschlagen.

#9 Updated by following over 3 years ago

  • Status changed from in Arbeit to im Test
  • % Done changed from 0 to 90

#10 Updated by following over 3 years ago

following schrieb:

Ich versuch's mal mit Escaping wie von bohrsty vorgeschlagen.

Hat nicht funktioniert. Nächster Versuch: "'" ersetzt durch eine Variable mit dem Inhalt "'".

#11 Updated by following over 3 years ago

  • Status changed from im Test to erledigt
  • % Done changed from 90 to 100

Womöglich hat das Escaping doch funktioniert: Vorher trat das Problem mehrmals täglich auf, danach nur noch bei einem einzigen Benutzer an einem Tag. Das könnte alter JavaScript-Code aus einem Browsercache gewesen sein.

Jedenfalls ist nun Ruhe, Problem gelöst.

#12 Updated by following over 3 years ago

  • Tracker changed from Bug to Change

War kein OC-Bug. Workaround für Browser-Bug implementiert.

Also available in: Atom PDF