Question

J'ai une application en cours d'exécution dans une HTA (MSFT HTML Application) qui utilise le même fichier de script encore et encore tout au long de cadres; comme ceux-ci nous 9 dans les lieux et que l'application est configuré dans les différents serveurs avec la mise en cache de jeu immédiat j'essaie expirer de se tailler une sorte de performance dans cette boule de boue.

Y at-il une « bonne » façon de charger le fichier principal de script dans le cadre supérieur Executing puis dans les délais i.e..

--- TOP WINDOW ----

var MainScript = function(){  return (function(){ all current functions etc here })(); };

--- SUB Cadres ----

var FrameScript = top.MainScript;
FrameScript();

Et comment cela serait affecté par la portée de la fenêtre (serait-il garder la portée de la fenêtre supérieure ou être portée du cadre fenêtre)

Était-ce utile?

La solution

La méthode la plus simple semble être de donner la sous-trame un ID puis pour remplir dynamiquement avec le script chargé dans le cadre de maître (en utilisant eval pour faire les js exécuter);

i.e..

|> Parent (aka TOP Frame)

<script>top.windows = [];</script>
<script id="MyScript">
    var test = function(){ top.windows.push(window); }
</script>

| >> sous-trame Les charges SubSubFrame dans un IFrame

| >>> SubSubFrame

<script id="SF1">
document.getElementById("SF1").innerHTML = eval(top.window.document.getElementById("MyScript").innerHTML);
test();
</script>

Cela fonctionne jusqu'à et au-delà de 8 cadres en profondeur dans un domaine de confiance (dans un .hta vous demande ensemble = true sur les cadres pour cela)

J'utilisé top.windows [] pour que je puisse vérifier la portée. (Taper dans console.log (top.windows) dans firebug)

Nausiating et profonde; Google faire quelque chose de similaire à retarder le chargement / exécution JS.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top