begin process at 2012 05 29 12:54:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript et le navigateur

 > 

Autre

 > 

lire du js dans un javascript


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

lire du js dans un javascript

jeudi 25 septembre 2008 à 15:35:31 | lire du js dans un javascript

buchholz35

Bonjour,

Afin de gagner du temps de chargement sur les pages,
je souhaite charger les fonctions, mes programmes au fur et à mesure des choix de l'utilisateur.

je cherche désepérément à incoporer un programme js depuis mon javascript en cours :

IE me pose toute sorte de soucis, soit le programme est dispo au deuxième cliq ...., soit j'ai le droit à une insulte.

"Contante chaîne non terminée"

ou

"Impossible de continuer l'opération à cause de l'erreur 80020101"

gniii




function require(fullUrl){
 if (window.XMLHttpRequest) {
  req = new XMLHttpRequest();            
  req.open("GET",fullUrl,false); // true= asynch, false=wait until loaded       
  req.send(null);
 } else if (window.ActiveXObject) {
  req = new ActiveXObject((navigator.userAgent.toLowerCase().indexOf('msie 5') != -1) ? "Microsoft.XMLHTTP" : "Msxml3.XMLHTTP");
  if (req) {
   req.open("GET", fullUrl, false);
   req.send();
  }
 }
 if (req!==false) {
  if (req.status==200) {
  var dj_global = this; // global scope reference
  if (window.execScript) {
   alert ('ie');
   window.execScript(req.responseText); 
   return null; 
  }
  dj_global.eval(req.responseText);
  
  //var global = this;
  //alert (req.responseText.toString());
  //window.eval(req.responseText);
  //window.parent.eval(req.responseText);
  //global.eval(req.responseText.toString());
  } else if (req.status==404) {
  // you can do error handling here
  alert ('chargement inopérant');
  }
 }
};



Merci de m'aiguiller
jeudi 25 septembre 2008 à 15:51:05 | Re : lire du js dans un javascript

buchholz35

J'ai une parade qui me plait moyennement :

function require(fullUrl){
 if (window.XMLHttpRequest) {
  req = new XMLHttpRequest();             
  req.open("GET",fullUrl,false);   
  req.send(null);
 } else if (window.ActiveXObject) {
  req = new ActiveXObject((navigator.userAgent.toLowerCase().indexOf('msie 5') != -1) ? "Microsoft.XMLHTTP" : "Msxml3.XMLHTTP");
  if (req) {
   req.open("GET", fullUrl, false);
   req.send();
  }
 }
 if (req!==false) {
  if (req.status==200) {
  var dj_global = this;
  if (window.execScript) {
   alert ('ie');
   //window.execScript(req.responseText);
   //return null;
   try {
    alert ('Création du script');
    script_tag = document.createElement('script');
    script_tag.setAttribute('type','text/javascript');
    script_tag.setAttribute('src',fullUrl);
    head = document.getElementsByTagName("head")[0];
    head.appendChild(script_tag);
   } catch(e) {
    alert ('Création du script 2');
    document.write('<script type="text/javascript" src="'+fullUrl+'"></script>');
   }
  } else {
   alert ('ff');
   dj_global.eval(req.responseText);
  }
  //var global = this;
  //alert (req.responseText.toString());
  //window.eval(req.responseText);
  //window.parent.eval(req.responseText);
  //global.eval(req.responseText.toString());
  } else if (req.status==404) {
  // you can do error handling here
  alert ('chargement inopérant');
  }
 }
};
jeudi 25 septembre 2008 à 15:53:55 | Re : lire du js dans un javascript

bultez

Membre Club
bonjour,
si je comprend bien tu tente d'exécuter du javascript récupéré par ajax.
généralement, c'est totalement inutile ! met les fonctions dans la page appelante,
ça ira bien mieux.
néanmoins, si tu y tiens à tous prix ( rien ne le justifie je pense, mais bon ... )
regarde comment font ce qu'on appelle pompeusement "framework" ou
même GAG posté ici
perso, execScript, je ne connais pas...
tu parles de IE... avec les autres navigateurs ça baigne ?

CordialementBul[mon Site][M'écrire]

généralement, c'est idiot de généraliser
on ne dit pas néanmoins mais handicapé nasal
jeudi 25 septembre 2008 à 15:55:54 | Re : lire du js dans un javascript

bultez

Membre Club
et ton remèdedocument.write('<script type="text/javascript" src="'+fullUrl+'"> )
est pire que le mal.....
document.write va effacer toute la page, y compris le javascript !
contrôle donc le contenu de la page après.

CordialementBul[mon Site][M'écrire]
jeudi 25 septembre 2008 à 16:15:59 | Re : lire du js dans un javascript

buchholz35

Merci bultez,

En fait, ce que j'ai fait devrait fonctionner pour IE 7, surtout FireFOX 3, et les autres .... peut-être ...

windows.execScript(); est spécifique à IE, ce qui permet d'executer l'équivalent d'un window.eval();
 (Sauf erreur de ma part)

Sinon, cela me fait gagner 8ms ..... en locale (dérisoire).


jeudi 25 septembre 2008 à 16:23:49 | Re : lire du js dans un javascript

bultez

Membre Club

ben, si c'est excclusif IE ( et je ne connais pas !?§ jamais vu ça...  ),
 ça ne fonctionnera pas avec les autres navigateurs.
eval est une possibilité ( si le php renvoi du javascript uniquement ! sans html )
regarde GAG, il te propose un exemple avec eval et en ajoutant le javascript à la page

MAIS "franchement" : évite ! encore une fois, c'est probablement inutile !
met tes fonctions dans la page appelante... tout baignera.

Cordialement          Bul     [mon Site]  [M'écrire]
jeudi 25 septembre 2008 à 18:54:09 | Re : lire du js dans un javascript

XtremDuke

Salut,

Ce genre de comportement est gérer par toutes les libs qu'on trouve. Lorsque tu updates un container avec une source Html externe (via Ajax), il est toujours profitable de pouvoir executer les scripts qui se trouvent dans cette dernière.

Je te file une "traduction" d'une fonction permettant d'évaluer tous les scripts d'un flux html quelconque:

function evalScript(string){
    var allScripts = new RegExp('<script[^>]*>([\\S\\s]*?)<\/script>', 'img');
    var oneScript = new RegExp('<script[^>]*>([\\S\\s]*?)<\/script>', 'im');
    var tabScripts = string.match(allScripts) || [];
    for(var i = 0; i < tabScripts.length; i++){
        eval(
tabScripts[i]);
    }
}


Ainsi tu peux utiliser la méthode suiante à ton algo :

if (req.status==200) {
    var dj_global = this; // global scope reference
    evalScript(req.responseText);
    ...



Projet en cours : Joof
vendredi 26 septembre 2008 à 00:01:11 | Re : lire du js dans un javascript

buchholz35

Merci XtremDuke,

evalScript est infructueux,
En fait, le contenu de la réponse n'est pas du html, mais du javascript,
Donc, je cherche à interpréter directement le contenu du fichier pour en apprendre le contenu ! (Pas de balise)
Normalement, l'instruction window.eval(); devrait suffire, mais le fichier doit être trop long ?
Après plusieurs recherches, l'instruction window.execScript(); devrait convenir ... erreur 80020101 !
Pour info : http://msdn.microsoft.com/en-us/library/ms536420(VS.85).aspx


Pour l'instant, et là est mon souhait, c'est de pouvoir gagner du temps de chargement, et de ce fait découper et réorganier mes sources java.

Merci à vous tous 
vendredi 26 septembre 2008 à 10:25:19 | Re : lire du js dans un javascript

XtremDuke

"En fait, le contenu de la réponse n'est pas du html, mais du javascript,"

Peut importe, tu peux n'avoir que du Javascript, le tout est d'entourer ton script par les balises ouvrantes et fermante de script et de connaitre les limites de la fonction eval() notamment sur la porté des variables globales.




 				Projet en cours : Joof 		
vendredi 26 septembre 2008 à 17:00:58 | Re : lire du js dans un javascript

zen69

Comme plusieur l'on dis, c'est tres rarement utile de faire ce que tu veux... franchement... je ne sais pas si ton fichier script est tres long mais j'ai rarement vu des fichier .js qui faisait plus de 100ko. Alors c'est plutot inutile. Juste par curiosité ... combien pesent ton fichier js?

Si tu veux vraiment sauver du temps de chargement (~0.1ms) lol, arrange toi pour que ton js reste en cache... comme ca tu le load juste une fois.... :P


  Google est ton ami, fait lui savoir!
  zen69 aka Ortho Le Profett

 

1 2

Cette discussion est classée dans : req, window, global, responsetext, if


Répondre à ce message

Sujets en rapport avec ce message

responseText ne renvoi rien [ par Orel88 ] Bonjour, J'étais en train de faire un bout de code ajax pour incrémenter une base de donnée lors d'un clic d'utilisateur mais mon responseText ne ren Une fonction qui bloque les autres [ par whombat ] Bonjour à tous,J'ai des fonctions qui 'fonctionnent' assez bien : 2 pop-up et une fonction pour éviter le clic droit. Mais ensemble ça coince...Là tou 2 Liste déroulantes liées + récupération de la valeur de la 2éme liste [ par didine6 ] Bonjour à tous, Je débute avec Ajax, et je trouve cette technique trop trop bien, notamment pour alimenter une seconde liste déroulante depuis la sél Change de l'image au survole de la souris [ par mamsk00 ] Bonjour, [code=js] function lien(id) { if (id=="1"){window.location="#1"} if (id=="2"){window.location="#2"} if (id=="3"){window.location="#3" Barre de progression Javascript [ par AurelR ] BonjourActuellement j'essaye d'envoyer un fichier sur mon serveur (sa j'y arrive) mais j'aimerais afficher une barre de progression.En cherchant un pe Event non déclenché après retardement [ par DarkVader ] Bonjour,J'ai un soucis que je ne m'explique pas ce matin :J'ai écrit 2 fonctions JS, l'une principale :            function InitAfter(){               Variables PHP dans JS [ par Dyx50 ] Bonjour,Alors voila depuis 2 jours je me casse la tête à propos de ma question. J'explique mon problème :J'ai un espace membre ou le membre peut ajout recupération valeur bouton radio [ par mams004 ] bonjour je voudrais récupérer la valeur du bouton radio coché:Voici le code: <font size="3" color="#000000" face=" recupération valeur bouton radio [ par mams004 ] bonjour je voudrais récupérer la valeur du bouton radio coché:Voici le code: <font size="3" color="#000000" face=" recupération valeur bouton radio [ par mams004 ] bonjour je voudrais récupérer la valeur du bouton radio coché:Voici le code: <font size="3" color="#000000" face="


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,154 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales