2011-04-03 3 views
4

Dans jQuery Mobile, je peux définir des "pages mobiles" comme div s avec data-role=page.Débogage de scripts injectés jQuery Mobile

Ceux-ci peuvent être stockés dans d'autres fichiers HTML, et injectés ad hoc dans la page HTML principale.

Dans un tel div je peux mettre un tag script, et ce script sera également injecté dans ma page principale.

Le script n'apparaît pas comme une balise script dans mon DOM, mais semble plutôt être injecté en ligne, et n'apparaît donc pas de manière standard dans un débogueur, par exemple. Le panneau de script de FireBug.

Est-ce que quelqu'un a trouvé un moyen normal de déboguer ces scripts (heureusement dans FF ou Chrome)?

EDIT:

Juste pour préciser - La balise de script dans la page "autre" n'est pas un script en ligne. C'est un:

<div data-role="page" id="some_id"> 
    <script type="text/javascript" src="MyScript.js"></script> 
    ... 
</div> 

Néanmoins, il est injecté en tant que script en ligne au DOM. BTW - si je mets la balise de script dans le HEAD du HTML, elle n'est pas chargée du tout.

EDIT 2:

Plus précisions:

  1. J'écris un cadre dans lequel "modules d'extension" seront branchés sur le site client et de la décision qui module (par exemple des pages supplémentaires » "avec des scripts) à charger est une décision d'exécution. Par conséquent, je n'ai aucune connaissance préalable dans ma page principale des scripts à charger, et je dois reporter le chargement au temps de "chargement du module".

  2. Mon but final ici est de permettre aux développeurs "module" de déboguer leurs scripts. Pour cela je voudrais une solution où les fichiers de script de références sont disponibles dans FireBug/ChromeDevTools comme n'importe quel autre script.

Il semble que c'est la norme jquery (noyau, non mobile) comportement pour supprimer la balise de script à partir d'un html chargé AJAX et eval il en ligne, au lieu de laisser la balise de script là-bas et laisser le navigateur charger normalement .

Je ne comprends pas vraiment bien les motifs derrière tout cela, et il entrave vraiment mes options de débogage :-(

BTW, j'utilise jQuery 1.5.2 (même comportement avec 1.5.1) et jQuery alpha mobile 4 (même avec 3)

Répondre

0

le script est ajouté au document à la volée et donc ce n'est pas normalement visible firebug. il y avait un add-on que le débogage géré des scripts chargés dynamiquement. Inline Code Finder for Firebug mais sa dernière version a été en 2009. Vous pouvez probablement l'utiliser si vous modifiez les versions prises en charge.BTW. Je crois que vous ne devriez pas utiliser cette fonctionnalité de jquery mobile. Il est là pour un support de base de projets énormes avec beaucoup de blocs de script en ligne, etc.

Vous devez inclure vos scripts sur chaque sous-page et le faire fonctionner de cette façon

ou

charger vos scripts Dynamiquement en cas de besoin avec .getScript() si elles sont trop gros pour inclure tout le temps.

[modifier]

Oui, si vous mettez le script dans la tête, il ne sera pas chargé. Je répète: Mettez le script dans la tête de chaque page et lier pageshow de la bonne page au lieu d'un normal document.ready

+0

Merci naugtur, Voir mon EDIT ci-dessus - pensez-vous que (balise de script référençant un JS externe) devrait fonctionner de la boîte? – ob1

+0

Ouais ... si ce n'est pas dans la tête d'une première page html, je l'appelle en ligne;) – naugtur

+0

Merci encore :-) IIUC, votre édition suggère que j'inclue le script (que je veux charger avec l'injection HTML) dans la page HTML principale pour commencer. Si oui, s'il vous plaît voir mon [EDIT 2] pour voir pourquoi ce n'est pas faisable dans mon cas. D'autres idées? – ob1

Questions connexes