2010-08-20 2 views
0

J'ai une page html. Sur cette page, je veux ouvrir la fenêtre popup. J'ai un lien sur lequel je dois cliquer & ouvrir une nouvelle pop up. Mais, ce n'est pas une nouvelle fenêtre de navigateur. C'est un popup basé sur AJAX.Pourquoi certains sites ne s'ouvrent pas dans Pop Window?

J'ai utilisé Queness popup & YUI boîte de dialogue.

Maintenant, dans cette fenêtre je veux montrer un iframe qui affichera la page liée au lien que j'ai cliqué. Mais, pour des raisons de sécurité, iFrame n'affiche pas cette page dans une fenêtre contextuelle, mais le contrôle des transferts de page vers cette page est redirigé vers cette page. Comment faire un popup stable pour montrer cette fenêtre?

Ici, je montre le code de dialogue YUI:

<html> 
<head> 
<title>Yahoo Dialog !</title> 
<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/2.8.1/build/fonts/fonts-min.css" /> 
<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/2.8.1/build/button/assets/skins/sam/button.css" /> 
<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/2.8.1/build/container/assets/skins/sam/container.css" /> 
<script type="text/javascript" src="http://yui.yahooapis.com/2.8.1/build/yahoo-dom-event/yahoo-dom-event.js"></script> 

<script type="text/javascript" src="http://yui.yahooapis.com/2.8.1/build/connection/connection-min.js"></script> 
<script type="text/javascript" src="http://yui.yahooapis.com/2.8.1/build/element/element-min.js"></script> 
<script type="text/javascript" src="http://yui.yahooapis.com/2.8.1/build/button/button-min.js"></script> 
<script type="text/javascript" src="http://yui.yahooapis.com/2.8.1/build/dragdrop/dragdrop-min.js"></script> 
<script type="text/javascript" src="http://yui.yahooapis.com/2.8.1/build/container/container-min.js"></script> 
<script type="text/javascript"> 
document.documentElement.className = "yui-pe"; 
</script> 

<style type="text/css"> 
#example { 
    height:30em; 
} 

label { 
    display:block; 
    float:left; 
    width:45%; 
    clear:left; 
} 

.clear { 
    clear:both; 
} 

#resp { 
    margin:10px; 
    padding:5px; 
    border:1px solid #ccc; 
    background:#fff; 
} 

#resp li { 
    font-family:monospace 
} 

.yui-pe .yui-pe-content { 
    display:none; 
} 

</style> 

<script> 
YAHOO.namespace("example.container"); 

YAHOO.util.Event.onDOMReady(function() { 

    // Define various event handlers for Dialog 
    var handleSubmit = function() { 
     this.submit(); 
    }; 
    var handleCancel = function() { 
     this.cancel(); 
    }; 
    var handleSuccess = function(o) { 
     var response = o.responseText; 
     response = response.split("<!")[0]; 
     document.getElementById("resp").innerHTML = response; 
    }; 
    var handleFailure = function(o) { 
     alert("Submission failed: " + o.status); 
    }; 

    // Remove progressively enhanced content class, just before creating the module 
    YAHOO.util.Dom.removeClass("dialog1", "yui-pe-content"); 

    // Instantiate the Dialog 
    YAHOO.example.container.dialog1 = new YAHOO.widget.Dialog("dialog1", 
          { width : "60em", 
           fixedcenter : true, 
           visible : false, 
           constraintoviewport : true, 
           buttons : [ { text:"Submit", handler:handleSubmit, isDefault:true }, 
             { text:"Cancel", handler:handleCancel } ] 
          }); 

    // Validate the entries in the form to require that both first and last name are entered 
    YAHOO.example.container.dialog1.validate = function() { 
     var data = this.getData(); 
     if (data.firstname == "" || data.lastname == "") { 
      alert("Please enter your first and last names."); 
      return false; 
     } else { 
      return true; 
     } 
    }; 

    // Wire up the success and failure handlers 
    YAHOO.example.container.dialog1.callback = { success: handleSuccess, 
          failure: handleFailure }; 

    // Render the Dialog 
    YAHOO.example.container.dialog1.render(); 

    YAHOO.util.Event.addListener("show", "click", YAHOO.example.container.dialog1.show, YAHOO.example.container.dialog1, true); 
    //YAHOO.util.Event.addListener("hide", "click", YAHOO.example.container.dialog1.hide, YAHOO.example.container.dialog1, true); 
}); 

</script> 
</head> 
<body class="yui-skin-sam"> 
<h1>Dialog Quickstart Example</h1> 

<div class="exampleIntro"> 
    <p>The Dialog Control is designed to allow you to retrieve information from the user and make use of that information within the page &mdash; whether interally to the page or by sending the information to the server via form post or XMLHttpRequest. This example shows how to do the latter. Click the button to show the Dialog instance and its form fields; fill out the form; submit the form. Dialog will automatically use the YUI Connection Manager to send the data via XMLHttpRequest to the server and will then echo that data back to you on the page.</p>   

</div> 
<div> 
<a href="#" id="show">Yahoo Mail !</a> 
</div> 


<form > 
<div id="dialog1" class="yui-pe-content"> 
     <div class="hd">Please enter your information</div> 
     <div class="bd"> 
         <form method="POST" action="http://developer.yahoo.com/yui/examples/container/assets/post.php"> 
      <div><p class="whitetext">YMail !<br/> 
      <iframe src ="http://www.stackoverflow.com/" width="750" height="400"><p>Ymail</p></iframe> 
      </p></div> 
      </form> 
     </div> 
    </div> 
    </form> 
</body> 
</html> 

Ceci est dialog.html page. Mais, tout en le chargeant, il sera transféré à http://stackoverflow.com. Vous pouvez modifier cette URL à partir de la propriété src de iframe.

Répondre

0

Vous ne pouvez effectuer qu'une requête XMLHTTP vers une page du même domaine. Le navigateur n'autorise pas les demandes inter-domaines. Pour faire une demande inter-domaine, vous avez besoin d'une page serveur dans votre domaine qui peut fonctionner comme un proxy et faire la demande pour vous.

+0

Où le code ci-dessus tente-t-il d'exécuter une requête XMLHttpRequest? – Quentin

+0

@David Dorward: Il n'est pas visible dans le code affiché comme dans la bibliothèque YUI, mais la description affichée sur la page le dit: * "Dialog utilisera automatiquement le YUI Connection Manager pour envoyer les données via XMLHttpRequest au serveur" *. – Guffa

0

De nombreux auteurs de pages ne souhaitent pas que leurs sites soient affichés dans des cadres sur les sites d'autres personnes et prennent des mesures pour les éviter.

Vous avez besoin de prendre la bonne décision, d'accepter leurs souhaits et d'arrêter d'essayer de cadrer un contenu tiers sans permission.

Questions connexes