Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Thyago Brasil

[Resolvido] Abrir modal JQuery fora de iframe/object

Recommended Posts

Bom dia, gostaria da ajuda de alguém com um código que desenvolvi para abrir uma janela modal. O arquivo onde está os botões e a div que abre dentro do modal é chamado dentro de um iframe ou object. O problema, é que não consigo fazer com que esse modal apareça fora dele. Veja na imagem:

 

thyago.jpg

 

Uploaded with ImageShack.us

 

Alguém poderia me dar uma dica?

 

Att.

 

Thyago

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque utilizou iframe ?

 

Estou precisando usar isto no Joomla. Na verdade estou utilizando o object mas coloquei como opção o iframe caso alguém consiga me ajudar com ele também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta chamar a modal fora do iframe,

ou chamar o arquivo jQuery fora do arquivo que é aberto dentro da iframe,

posta o link!

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta chamar a modal fora do iframe,

ou chamar o arquivo jQuery fora do arquivo que é aberto dentro da iframe,

posta o link!

Infelizmente não tenho como passar o link. O que posso fazer é postar o código JQuery que utilizei aqui pra você dar uma olhada:

$(function(){

// Dialog
   $('.dialog').dialog({
       autoOpen: false,
       width: 600,
       buttons: {
       "Fechar": function() {
       $(this).dialog("close");
       }
       }
   });

   // Dialog Link
   $('.dialog_link').click(function(){

   $('.dialog').dialog('close');

   var id_link = $(this).attr('id');
   var index = id_link.split('_');

   $('#txt_'+index[1]).dialog('open');

   return false;

   });

   //hover states on the static widgets
   $('.dialog_link, ul.icons li').hover(
   function() { $(this).addClass('ui-state-hover'); },
   function() { $(this).removeClass('ui-state-hover'); }
   );

});

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara.. existem plugins especificos para abrir um modal fora de um iframe.

 

você não vai conseguir fazer com esse teu. Precisa pegar outro que ja tenha esse comportamento.(pois modificar um que não faz, é mais complicado)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Thyago, se as duas páginas estiverem no mesmo domínio então você terá tipo uma relação de confiança. Assim uma consegue conversar com a outra. Nesse caso você pode deixar o script da popup na página "pai" e enviar o comando de abertura a partir da página "filha", entendeu?

Tipo assim (na página filha):

function abreJanela(conteudo) {
   parent.abreJanela(conteudo);
}

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, bom dia! A duvida postada acima foi resolvida com JavaScript. Para isso utilizei os códigos:

 

Javascript para abrir/esconder divs (flutuantes)

function abrefecha(obj) {

switch (obj.id) {
	case 'principal':		 
		document.getElementById('principal').style.display="block";
		document.getElementById('div1').style.display="none";
		document.getElementById('div2').style.display="none";
		document.getElementById('div3').style.display="none";		 
		break
	case 'div1':
		document.getElementById('principal').style.display="block";
		document.getElementById('div1').style.display="block";
		document.getElementById('div2').style.display="none";
		document.getElementById('div3').style.display="none";
		break		 
	case 'div2':		 
		document.getElementById('principal').style.display="block";
		document.getElementById('div1').style.display="none";
		document.getElementById('div2').style.display="block";
		document.getElementById('div3').style.display="none";
		break
	case 'div3':		 
		document.getElementById('principal').style.display="block";
		document.getElementById('div1').style.display="none";
		document.getElementById('div2').style.display="none";
		document.getElementById('div3').style.display="block";
		break
}
}

 

Código onde contém as divs

<div id="principal" class="div_principal">
//Esta div contém dados vindos do banco mysql
<a href="#" id="div1" onclick="abrefecha(this);">DIV 1</a>
<a href="#" id="div2" onclick="abrefecha(this);">DIV 2</a>
<a href="#" id="div3" onclick="abrefecha(this);">DIV 3</a>
</div>
<div id="div1">DIV 1</div>
<div id="div2">DIV 2</div>
<div id="div3">DIV 3</div>

 

Este é o codigo que utilizei para o que estava necessitando, porém, surgiu uma nova dúvida em relação à dar refresh de segundo em segundo APENAS na div principal. Tentamos resolver utilizando o seguinte código:

 

function AutoRefresh(){
var xmlHttp;
   try{
       xmlHttp=new XMLHttpRequest();// Firefox, Opera 8.0+, Safari
   }
   catch (e){
       try{
           xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer
       }
       catch (e){
           try{
             xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
           }
           catch (e){
             alert("No AJAX");
             return false;
           }
       }
   }

   xmlHttp.onreadystatechange=function(){
       if(xmlHttp.readyState==4){
           document.getElementById('principal').innerHTML=xmlHttp.responseText;
           setTimeout('AutoRefresh()',1000);
       }
   }
   xmlHttp.open("GET","pasta/busca.php",true);//Arquivo que busca os dados do banco.
   xmlHttp.send(null);
}
AutoRefresh();

 

Com esse código, deixei a div principal vazia e criei um novo arquivo que faz a conexão e a busca no banco de dados mysql. Porém ele apresenta apenas a div principal e "some" o restante da página.

 

P.S.: A FUNÇÃO DE MOSTRAR/ESCONDER DIV FUNCIONA APENAS QUANDO ESTÁ NO ARQUIVO BUSCA.PHP, PORÉM COMO ESTÁ ATUALIZANDO DE SEGUNDO EM SEGUNDO A DIV QUE APARECE QUANDO CLICO NO LINK, FICA ATUALIZANDO TAMBÉM.

 

Att.

 

Thyago

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, sou novo em Ajax e estou com o seguinte problema:

 

Preciso atualizar uma div de segundo em segundo. Nesta div contém dados vindos do bd MySQL.

Consegui fazer ela atualizar, porém, preciso que ele me retorne um valor que não estou conseguindo. Vou explicar melhor. Tenho um sistema de notificações. O arquivo onde faz a busca no banco de dados e me traz a quantidade de notificações que tenho é colocado nesse script:

 

function AutoRefresh(){
       var xmlHttp;
   try{
       xmlHttp=new XMLHttpRequest();// Firefox, Opera 8.0+, Safari
   }
   catch (e){
       try{
           xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer
       }
       catch (e){
           try{
             xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
           }
           catch (e){
             alert("No AJAX");
             return false;
           }
       }
   }

   xmlHttp.onreadystatechange=function(){
       if(xmlHttp.readyState==4){
           document.getElementById('principal').innerHTML=xmlHttp.responseText;
           setTimeout('AutoRefresh()',1000);
       }
   }
   xmlHttp.open("GET","pasta/busca.php",true);//Arquivo que busca os dados do banco.
   xmlHttp.send(null);
}
AutoRefresh();

Preciso receber na pagina principal o numero de notificacoes que vem do arquivo busca.php.

 

Como posso fazer isso?

 

Att.

 

Thyago

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode usar o comando setTimeout() dentro do teu próprio método para chamá-lo a cada 1 segundo.

Tipo assim:

 

function teste() {
console.log("oi");
setTimeout(teste,1000);
}
teste();

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.