2010-07-14 13 views
0

Il semble que ce soit un problème connu et a été demandé plusieurs fois auparavant ici dans SO, mais je ne vois rien de spécifique à jQTouch alors je pensais que je voudrais essayer. JQT charge dynamiquement les pages lorsqu'un clic est effectué sur un lien.Dynamiquement chargé <script> tag non utilisé dans les navigateurs WebKit

Dans cette page, je voudrais inclure quelque chose comme

<script> 
$.include('javascriptfile.js', function() {alert('do something with results of this file to an already existing div element');}; 
</script> 

Le .include de $ est un plugin jquery J'ai trouvé que imite le .load de $ avec quelques smarts ajoutés. Testé pour fonctionner sur FF mais pas dans Chrome ou, plus important encore, Safari.

L'alerte n'est jamais affichée. FireBug ne montre jamais le javascript même en cours de chargement. Si je mets une alerte avant le $ .include je ne vois toujours rien.

J'ai essayé un événement onclick/ontap qui exécuterait alors ce code qui était inclus dans la balise head, pas de chance.

Editer: J'utilise la version r148 de jQT. Cela fonctionnait avant de passer à cette version, je crois.

+0

Où est le plugin? Les scripts chargés dynamiquement fonctionnent définitivement s'ils sont correctement chargés. – Pointy

+0

Le plugin utilisé pour inclure est jquery.includeMany-1.2.2.js qui peut être trouvé à http://www.arashkarimzadeh.com/index.php/jquery/17-includemany-jquery-include-many.html Je signalerai que j'ai récemment utilisé r148 et je me souviens que cela a fonctionné dans r108. –

Répondre

0

Eh bien Geries, je vous remercie de votre aide, mais en fin de compte, la réponse a nécessité une refonte radicale de la façon dont j'utilisais jQTouch. La solution consistait à tout déplacer vers un événement onclick et à faire en sorte que tous les hrefs soient liés à #. Cela pourrait être ce que vous parliez de Geries.

Dans la fonction onclick, je fais la logique, le préchargement, le chargement de la page via mon propre GET via jquery, puis j'utilise l'objet public jQT.goTo (div, transition). Cela semble contourner les bogues de WebKit ou tout ce que je courais et cela fonctionne maintenant sur FireFox, Chrome, Safari, iPhone, et le lot. Je rencontre quelques problèmes d'animation avec JQT mais je pense que ce sont des problèmes connus sur lesquels j'espère que Stark et le gang de JQTouch travaillent.

0

Avez-vous essayé d'ajouter le fichier javascript en utilisant l'un de ces deux méthodes:

Way statique:

<script type="text/javascript"> 

function staticLoadScript(url){ 
    document.write('<script src="', url, '" type="text/JavaScript"><\/script>'); 
} 

staticLoadScript("javascriptfile.js"); 
modifyDivFn(processFnInFile()); 

</script> 

façon dynamique:

<script type="text/javascript"> 

function dhtmlLoadScript(url){ 
    var e = document.createElement("script"); 
    e.src = url; 
    e.type="text/javascript"; 
    document.getElementsByTagName("head")[0].appendChild(e); 
} 

onload = function(){ 
    dhtmlLoadScript("javascriptfile.js"); 
    modifyDivFn(processFnInFile()); 
} 

</script> 

Après include, vous pouvez appeler un fonction qui effectue le traitement que vous voulez (c'est processFnInFile()) dont le résultat sera transmis à modifyDivFn (et modifiera la div que vous voulez.) Vous pourriez le faire en une seule fonction, juste pour ustrate l'idée.


Source: Dynamically Loading Javascript Files

+0

Ya, j'ai essayé d'avoir une fonction statique dans la tête qui s'ajouterait à la tête. Le problème, c'est que je ne peux jamais appeler cette fonction statique. Ce n'est pas une option pour utiliser l'événement onload, d'après ce que je sais.La façon dont jQT fonctionne est que vous cliquez sur un lien, dans mon cas, je fais référence aux fichiers html récupérés via le mécanisme interne GET que jQT utilise, puis le contenu de ce fichier est placé dans un div généré dynamiquement. Donc, dans ce contenu généré dynamiquement, ce fichier html, j'ai la balise de script qui serait d'appeler votre fonction statique, mais le code dans cette balise de script est jamais exécuté –

+0

Laissez-moi voir si je comprends bien, vous cliquez sur un lien, cette on obtient le contenu d'un fichier et le place dans un div (qui génère dynamiquement). Donc, quand le contenu est placé sur cette div, vous voulez qu'un script soit exécuté? – Geries

+0

ya, ça sonne à peu près juste. –