2009-08-20 3 views
1

ci-dessous la description de mon Qué:javascript - Impossible d'accéder à l'élément parent de domaine croix dans mon iframe

J'ai ajouté fonction bookmarklet sur mon site. Pour cela, j'ai fourni un lien appelé "mon signet" sur mon site. Donc, je vais faire glisser ce lien vers le signet et il sera ajouté au signet. Donc, à partir de maintenant, quand je visite un autre site, dis "yahoo.com" .. et j'aime tout le contenu de ce site afin que je puisse sélectionner ce contenu et cliquer sur "mon signet" du signet, il ouvrira une page de mon site en tant qu'élément enfant de "yahoo.com".

Pour cela, j'ai ajouté le code ci-dessous en javascript. où ifrme src est l'URL de mon site.

var div = document.createElement("div"); 

    div.id = "instacalc_bookmarklet"; 

    var str = ""; 
    str += "<table id='instacalc_bookmarklet_table' valign='top' width='570' cellspacing='0' cellpadding='0'><tr><td width ='850' height='880'>"; 
    str += "<iframe frameborder='2' scrolling='yes' name='instacalc_bookmarklet_iframe' id='instacalc_bookmarklet_iframe' src='" + iframe_url + "' width='850px' height='875px' style='textalign:right; backgroundColor: white;'></iframe>"; 
    str += "</td><td id='closetd' onClick='toggleItem(\"instacalc_bookmarklet\");' style='background: #FFDDDD;' title='click to close window' valign='top' align='center' width='20px'>"; 
    str += "<a href='javascript:void(0);' style='width:100%; text-align: middle; color: #FF0000; font-family: Arial;'>x</a>"; 
    str += "</td></tr></table>"; 

    div.innerHTML = str; 

    div.onkeypress = keyPressHandler; 
    document.body.insertBefore(div, document.body.firstChild); 

Vous pouvez marquer ici que, j'ai ajouté une étiquette de table, et deux td à l'intérieur que .. Un td pour montrer ma page dans iframe et un autre td pour le bouton « fermer » .. qui clôturera cette ouverture windown de "yahoo.com".

Maintenant, ma question est .. J'ai bouton "fermer" dans mon site .. onclick de celui-ci ... Je veux fermer la fenêtre .. (la même action que le bouton «fermer» ci-dessus javascript fait. . appeler la fonction « ToggleItem »)

mais mon problème est .. dans mon iframe Je ne suis pas en mesure d'accéder à l'élément div ..

Je l'ai écrit comme

<a href="#bookmarklet" onclick="closethis();">Close</a> 


<script> 

    function closethis() 
    { 

     id='instacalc_bookmarklet'; 
     var item = parent.document.getElementById(id); 
     if(item){ 
     if (item.style.display == "none"){ 
      item.style.display = ""; 
     } 
     else{ 
      item.style.display = "none"; 
     } 
     } 
    } 


</script> 

mais onclick de cette lien proche .. Je reçois erreur javascript "permission refusée pour obtenir la propriété window.document" en ligne var item = parent.document.getElementById (id);

Des idées?

Merci à l'avance.

+0

Vous devriez vérifier la réponse à cet article http://stackoverflow.com/a/19332928/532116 – Gilbou

Répondre

2

Ceci est interdit par javascript pour des raisons de sécurité et vous ne pouvez pas le modifier. Ils permettent de contourner la restriction:

  • Utilisez une fonction de rappel et chargez les données au format JSONP. Cela peut ne pas convenir à votre cas.
  • Créer un formulaire dans la page Web avec une action visant le domaine prioritaire, le soumettre, obtenir la réponse puis supprimer le formulaire.
Questions connexes