De rien !
Si l'url devient indispensable pour ton client, il faudra passer par une mécanique beaucoup plus lourde à base de proxy, comme le suggère Willpower.
Version imprimable
De rien !
Si l'url devient indispensable pour ton client, il faudra passer par une mécanique beaucoup plus lourde à base de proxy, comme le suggère Willpower.
@Nadox, juste pour être sûr (n'étant pas familier à mort du JS), aurais tu l'amabilité de me confirmer le comportement suivant avec le code que je poste en fin de message :
- la page se charge et enregistre un premier load de la Iframe mais je ne déclenche pas la requête XmlHttpRequest
- le visiteur clique dans la Iframe et redéclenche le load de la Iframe et là, déclenche la requête XmlHttpRequest et exécute la page de destination frame.aspx
- le visiteur reclique autant de fois qu'il veut dans la Iframe mais ne redéclenche plus du tout la requête XmlHttpRequest
J'ai gérer le chargement du load avec la variable passage en début de script.
Merci d'avance.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 <%@ Page Language="VB" AutoEventWireup="false" CodeFile="test.aspx.vb" Inherits="test" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Untitled Page</title> <script type='text/JavaScript'> var passage = 0; function getXhr() { var xhr = null; if (window.XMLHttpRequest) // Firefox et autres xhr = new XMLHttpRequest(); else if (window.ActiveXObject) { // Internet Explorer try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); xhr = false; } return xhr } /** * Méthode qui sera appelée sur le click du bouton */ function go() { var xhr = getXhr() // On défini ce qu'on va faire quand on aura la réponse xhr.onreadystatechange = function() { // On ne fait quelque chose que si on a tout reçu et que le serveur est ok if (xhr.readyState == 4 && xhr.status == 200) { //alert(xhr.responseText); } } if (passage == 1) { xhr.open("GET", "/frame.aspx", true); xhr.send(null); } passage++; } </script> </head> <body> <form id="form1" runat="server"> <ajax:ScriptManager ID="sm" runat="server"></ajax:ScriptManager> <div> Compteur <iframe id="maframe" name="nmaframe" src="http://www.google.fr" width="100%" height="600" onload="go();" ></iframe> </div> </form> </body> </html>
Oui, c'est bien le comportement que devrais obtenir.
Je dirais même :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 function go() { if (passage == 1) { var xhr = getXhr(); // On défini ce qu'on va faire quand on aura la réponse xhr.onreadystatechange = function() { // On ne fait quelque chose que si on a tout reçu et que le serveur est ok if (xhr.readyState == 4 && xhr.status == 200) { //alert(xhr.responseText); } } xhr.open("GET", "/frame.aspx", true); xhr.send(null); } passage++; }
Merci pour cette correction.
Je me suis posé la question et je n'ai pas osé le faire.
@ la prochaine