Fond
Je travaille sur un projet qui s'exécute dans un navigateur Web intégré dans un petit appareil avec des ressources limitées. Le navigateur lui-même est un peu daté et a des limites à ses capacités (HTML 4.01 †, W3C DOM niveau 2 †, JavaScript 1.4). Je n'ai aucune documentation sur le navigateur, donc ce que je sais vient d'essais et d'erreurs.Autres méthodes pour créer du JavaScript dynamique?
Le but est de récupérer du contenu dynamique à partir d'un serveur de sorte que seul un minimum de code inflexible doit être intégré dans le périphérique exécutant le navigateur Web. Le navigateur ne prend pas en charge l'objet XMLHTTPRequest, donc AJAX est désactivé. En travaillant avec, j'ai écrit un peu de code de test pour insérer dynamiquement JavaScript.
† parties mineures de ces normes ne sont pas supportées
EDIT Bien que je ne peux pas confirmer en fait, je crois que this site peut lister le support DOM du navigateur intégré parce que je vois « Mozilla/4.0 (compatible; EBSWebC 2.6; Windows NT 5.1) "en tant qu'agent utilisateur dans le journal du serveur.
<html>
<head>
</head>
<body onload="init()">
<div id="root"></div>
<script type="text/javascript">
<!--
function init() {
// Add a div element to the page.
var div = document.createElement("div");
div.id = "testDiv";
document.getElementById("root").appendChild(div);
// Set a timeout to insert the JavaScript after 2 seconds.
setTimeout("dynamicJS()", 2000);
}
function dynamicJS() {
...
}
//-->
</script>
</body>
</html>
Méthode 1
I mis en œuvre d'abord la fonction dynamicJS
utilisant Méthode 1 et a constaté que si le code est exécuté comme prévu dans Chrome, IE8 et FireFox 3.5, le JavaScript n'est pas réellement récupéré par le navigateur intégré lorsque l'élément est ajouté.
function dynamicJS() {
var js = document.createElement("script");
js.type = "text/javascript";
js.src = "js/test.js";
document.getElementById("root").appendChild(js);
}
Méthode 2
Vous cherchez un travail autour, je mis en œuvre Méthode 2. Cette méthode fonctionne réellement dans le navigateur intégré lorsque le JavaScript est récupéré et exécuté, mais il ne fonctionne pas dans d'autres navigateurs Web modernes que j'ai testés (Chrome, IE8, FireFox 3.5).
function dynamicJS() {
var js= '<script type="text/javascript" src="js/test.js"> </s' + 'cript>';
document.getElementById("testDiv").innerHTML = js;
}
Question
Je suis nouveau JavaScript et programmation web en général, donc j'espère un (ou plusieurs) des experts ici peut faire la lumière sur ce point pour moi.
Y at-il quoi que ce soit sur le plan technique mal avec Méthode 2 et sinon, pourquoi ne pas travailler dans les navigateurs web modernes?
Ce n'est probablement pas cela, mais j'ai eu quelques problèmes dans le passé avec un navigateur qui n'analysait pas une balise de script s'il n'y avait pas de contenu à l'intérieur. Je fais une règle de mettre un 'espace' dans une balise de script quand je l'inclue sur une page. Peut-être qu'avec method1, vous pourriez définir js.innerText = ''; ou dans Method2, ajoutez un espace entre les balises de script. –