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:
  1. function MenuWithAdminClass() {  
  2.   this.setUrl = function(url) {  
  3.     console.log('hmm');  
  4.   }   
  5. }  
  6. var menuWithAdmin = new MenuWithAdminClass();  
A tünet ugyan az. Mi lehet a baj? Ha a script tag-ben csak ennyi van:
  1. 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:
  1. <!DOCTYPE HTML>  
  2. <html lang="en-US">  
  3. <head>  
  4.   <meta charset="UTF-8">  
  5.   <title></title>  
  6. </head>  
  7. <body>  
  8. <!--1-->  
  9. <script type="text/javascript">  
  10. console.log('hmm');  
  11. </script>  
  12. </body>  
  13. </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.