{"id":13,"date":"2007-10-30T14:54:16","date_gmt":"2007-10-30T12:54:16","guid":{"rendered":"http:\/\/mayeur.com\/wordpressfr\/?p=13"},"modified":"2007-11-10T18:02:13","modified_gmt":"2007-11-10T16:02:13","slug":"attendre-le-chargement-dun-autre-frame","status":"publish","type":"post","link":"https:\/\/mayeur.com\/wordpressfr\/attendre-le-chargement-dun-autre-frame\/","title":{"rendered":"Attendre le chargement d&rsquo;un autre frame"},"content":{"rendered":"<p>Petit probl\u00e8me technique qui revient r\u00e9guli\u00e8rement. Ce probl\u00e8me n&rsquo;est pas toujours facile \u00e0 d\u00e9tecter, car il peut \u00eatre al\u00e9atoire (non reproductible de fa\u00e7on syst\u00e9matique).<\/p>\n<p><em>Description du probl\u00e8me<\/em> : j&rsquo;ai une page HTML comportant 2 ou plusieurs frames. Une fonction javascript sur l&rsquo;un des frames doit faire appel \u00e0 un \u00e9l\u00e9ment de la deuxi\u00e8me frame. Si le temps de chargement de la deuxi\u00e8me frame est assez long et qu&rsquo;elle n&rsquo;est donc pas charg\u00e9e, il est possible que la fonction ne trouve pas l&rsquo;\u00e9l\u00e9ment recherch\u00e9. Il faut donc attendre le chargement de cette deuxi\u00e8me frame.<\/p>\n<p>Pour cela, la solution consiste \u00e0 faire une boucle utilisant la fonction setTimeout (pour ne pas monopoliser le CPU avec une boucle d&rsquo;attente).<\/p>\n<p>Voici la fa\u00e7on dont je l&rsquo;impl\u00e9mente :<\/p>\n<p><code><br \/>\nvar cpt;<br \/>\nfunction funcky() {<br \/>\n&nbsp;&nbsp;clearTimeout(funcky);<br \/>\n&nbsp;&nbsp;\/\/ la 2\u00e8me frame s'appelle fra2<br \/>\n&nbsp;&nbsp;if(!top.fra2.document) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;if (cpt) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (cpt++ &gt; 20) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(\"Chargement de la page trop long...\");<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;} else cpt=1;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;setTimeout(funcky,200);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;return;<br \/>\n&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;\/\/ ...<br \/>\n&nbsp;&nbsp;\/\/ Ecrire mon code ici<br \/>\n&nbsp;&nbsp;\/\/ ...<br \/>\n}<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Petit probl\u00e8me technique qui revient r\u00e9guli\u00e8rement. Ce probl\u00e8me n&rsquo;est pas toujours facile \u00e0 d\u00e9tecter, car il peut \u00eatre al\u00e9atoire (non reproductible de fa\u00e7on syst\u00e9matique). Description du probl\u00e8me : j&rsquo;ai une page HTML comportant 2 ou plusieurs frames. Une fonction javascript sur l&rsquo;un des frames doit faire appel \u00e0 un \u00e9l\u00e9ment de la deuxi\u00e8me frame. Si [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[3],"tags":[],"class_list":["post-13","post","type-post","status-publish","format-standard","hentry","category-javascript"],"_links":{"self":[{"href":"https:\/\/mayeur.com\/wordpressfr\/wp-json\/wp\/v2\/posts\/13","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mayeur.com\/wordpressfr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mayeur.com\/wordpressfr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mayeur.com\/wordpressfr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mayeur.com\/wordpressfr\/wp-json\/wp\/v2\/comments?post=13"}],"version-history":[{"count":0,"href":"https:\/\/mayeur.com\/wordpressfr\/wp-json\/wp\/v2\/posts\/13\/revisions"}],"wp:attachment":[{"href":"https:\/\/mayeur.com\/wordpressfr\/wp-json\/wp\/v2\/media?parent=13"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mayeur.com\/wordpressfr\/wp-json\/wp\/v2\/categories?post=13"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mayeur.com\/wordpressfr\/wp-json\/wp\/v2\/tags?post=13"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}