ugrás a tartalomhoz

dojox.layout.ContentPane - executeScripts

sirkalmi · 2010. Dec. 7. (K), 12.03
Szervusztok!

Most döbbentem rá, hogy a dijit.layout.ContentPane-be betöltött script tag-ek kizárólag a firefox böngészőben futnak le. Utánajártam a dolognak és kiderítettem, hogy ebban az esetben, ha script-tag-ek vannak a tartalomban akkor a dojox.layout.ContentPane-t kell alkalmazni executeScript="true" pareméter értékkel. Szerencsére egy egyszerű replace-el ki tudtam cserélni mindenütt a forrásban. Összesen 92 helyen kellett cserélni.

A csere után a legtöbb helyen működik is szépen a dolog, azonban sok helyen mintha végtelen ciklus volna nem akar lefutni a kód és végül a böngésző dob fel egy ablakot, hogy le kívánom-e állítani a program futását. Értetlenül állok a dolog előtt. A végletekig megróbáltam leegyszerűsíteni a script tag-et és végül csak ennyit hagytam benne:

function MenuWithAdminClass() {
  this.setUrl = function(url) {
    console.log('hmm');
  }	
}
var menuWithAdmin = new MenuWithAdminClass();
A tünet ugyan az. Mi lehet a baj? Ha a script tag-ben csak ennyi van:

console.log('hmm');
Akkor a lefut a program.

Segítségeket előre nagyon köszönöm!

sirkalmi
Mariák Kálmán
 
1

Őrület!

sirkalmi · 2010. Dec. 7. (K), 14.25
Megvan a megoldás!

Minden script tag előtt meghívok egy tld tag library-t ami visszaad egy értéket. Rendszerint ez az érték egy szám, ha sikeres a lefutás és valami szöveg, ha sikertelen. Ezt az értéket mivel nem akarom megjeleníteni, ezrét egy html comment-be szoktam meghívni a tld-t.
Azt fedeztem fel, ha a script tag előtt egy számot tartalmazó html comment van akkor produkálja a fent leírt tüneteket. pl: <!-- 1 -->

Wtf?

sirkalmi
2

Példa

Poetro · 2010. Dec. 7. (K), 15.17
Jó lenne egy példa is azért. És biztosan produkálja ezt minden elterjedt böngészőben? Chrome-tól és Firefoxtól kezdve Internet Exploreren át a egészen Safari-ig? Mert azért ezt kétlem.
3

Firefox, IE és Opera alatt

sirkalmi · 2010. Dec. 7. (K), 22.52
Firefox, IE és Opera alatt produkálta. Tudom reprodukálni bármikor. Ebből arra következtetek, hogy nem böngésző hanem dojo bug.

Minden kétséget kizárva az alábbi kód nem fut le:
<!--1-->
<script type="text/javascript">
console.log('hmm');
</script>

Ez pedig lefut:
<!--blabla: 1-->
<script type="text/javascript">
console.log('hmm');
</script>
4

Lefut

Poetro · 2010. Dec. 7. (K), 23.37
Minden kétséget kizárva az alábbi kód lefut:
<!DOCTYPE HTML>
<html lang="en-US">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
<!--1-->
<script type="text/javascript">
console.log('hmm');
</script>
</body>
</html>
Ugyan ebben nem ugyan az szerepel, mint amiről az előbb írtál, ott ugyanis <!-- 1 --> szerepelt, nem <!--1-->. A fenti kódot akár magad is kipróbálhatod.

Mostmár tényleg kíváncsi vagyok, hogyan tudod reprodukálni, és mitől lett dojo bug?
5

Így pesze, hogy lefut. Ezt

sirkalmi · 2010. Dec. 8. (Sze), 11.38
Így pesze, hogy lefut.
Ezt tedd bele egy file-ba:
# <!--1-->
# <script type="text/javascript">
# console.log('hmm');
# </script>

Hivatkozd meg egy dojox.layout.ContentPane -ben executeScripts="true" paraméter értékkel és akkor produkálja a hibát. Szerintem a dojox.layout.ContentPane-ben van a hiba.
6

Dojo

Poetro · 2010. Dec. 8. (Sze), 13.29
Igen, ezek után tényleg Dojo bug-nak tűnik. Próbálj körülnézni a Dojo bug listájában, hogy valaki jelentette már ezt, ha nem, akkor jelentsd.