Ir para conteúdo

POWERED BY:

Arquivado

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

Wagner Martins - SC

Pop up em flash no firefox

Recommended Posts

Gostaria de saber pq no firefox o banner em flash qdo eh fechado, os links do site onde o banner esta emcima, naum funcionam, no ie não acontece isso.

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o código que você ta usando para fechar ele????

 

E você colocou wmode="transparent" nele?

Pois as vezes é isso que está faltando... o banner é fechado, mas o arquivo flash ainda está lá só que escondido... se não estiver com a codificação correta... causa esse tipo de coisa.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

E você colocou wmode="transparent" nele?

 

Não é isso não.

Testei em uma página com Wmode=transparent, realmente os links em html só estão funcionando no IE (uso o 8).

No Firefox, Opera e Safari, os links não funcionam.

O cursor permanece como seta ao passar o mouse.

 

Se fosse usado o Wmode=opaque, seria exibido o fundo branco do swf sobreposto aos links ou outro objeto da página.

 

Se abaixo do popup, houver um banner em Flash com links ou botões, também não funciona. No IE, roda normalmente.

 

Sempre verifico em vários navegadores, nunca tinha visto algo assim.

Não testei online, só no DW (CS4).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apenas para observação.

Fui conferir o site da livrariasaraiva.com.br, a home (em html) sempre era carregada com um popup em Flash sobreposto a um banner rotativo, com botões e links para outras páginas html.

O layout foi alterado, não exibe mais o popup ao carregar, tanto no FF quanto IE. É coisa recente, visito frequentemente o site.

 

Também hoje, ao acessar o FF por outro motivo, foi exibido uma barra para desinstalação do complemento "Microsoft Choise Guard 2.0". Ao testar, não exibiu nenhuma alteração quanto ao bug em link para download no swf.

 

Ao verificar o popup, que não é em swf, no site da digimer.com.br, pelo Firefox ou IE, segue normal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom o popup do site do globo.com é em SWF e funciona em todos os navegadores... do jeito que eu disse.

 

Para fazer ele sumir.

 

Não basta dar um unloadMovie("bla bla bla") no flash ao apertar o botão

não...

 

Para fazer popup em site, você tem que colocar uma div flutuante com position absolute... e um top e left da vida... com display="block"

E quando clicar no botão do flash, ativa um javascript que fecha essa div dando um display="none";

 

E ai ta resolvido seu problema.

 

É assim que faz... que eu faço...

E desconheço outro metodo que funcione.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

E desconheço outro metodo que funcione.

 

Nunca testei online, mas inventei um jeito que funciona sem JavaScript nenhum.

Tenho o código em JavaScript, vi em funcionamento, mas só nos mostraram na corrida, nunca aprendi a usar.

Comentei com outro instrutor (desenvolvedor) que deu um toque que era possível fazer isso apenas no Flash.

Me atormentei por alguns dias, até descobrir , de tão simples que era, mas funciona.

 

Sim, uso uma div absoluta (Draw Ap Div, com z index superior, W e H equivalentes) para posicionar o swf.

 

Sempre testei em vários navegadores, mas atualmente só está funcionando no IE.

Alguma idéia de porque isso ocorre?

 

Obs: não uso um "unloadMovie("bla bla bla") no flash ao apertar o botão". Quanto ao display "block" ou "none", nem sei o que é, não fui apresentada nem em curso, nem em livros. Agradeço de puder indicar onde obter informações sobre o assunto, estou sempre disposta a aprender.

 

Quanto ao popup: criei um "timer" via timeline (basicão) para exibição de 8 segundos, e após fechar automaticamente.

Ao clicar no botão "Fechar", simplesmente direciono para um blankframe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É assim que faz... que eu faço...

 

Bom, você sabe ... eu invento.

Se quiser conferir, publiquei um exercício (bem tosco), de um swf com um popup.

No IE vai beleza, no FF dá galho. Clique aqui

 

Fui conferir no globo.com, realmente show de bola.

 

Pode dar um toque como usar o JavaScript? Eu publico o código + html.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então,

 

Na verdade quando você direciona o flash para um blank frame... ele continua ali, ou seja ele continua existindo sobre o objeto, por isso ele fica sobre os links fazendo com que eles deixem de existir.

 

display é uma caracteristica dos items HTML, todos os itens que estão exibidos em sua tela em usa maioria são com display:block (CSS), mas se você estiver trabalhando com ul, li metodos de listagem, você usa display:list-item que é para listagem de itens e não blocar eles em sua tela.

 

Então o que eu estou dizendo é que quando você deixa um flash, mesmo que vazio sobre um conteúdo ele continua sendo um flash vazio... com todas as propriedades de flash, ele não perde essas propriedades, por isso acaba ficando sobre os objetos em sua tela... ou seja a parte HTML do seu site.

 

O metodo mais comum de se fazer isso é como eu falei, você cria um fla que tem um botão que chama um js que executa o código para fazer essa div desaparecer... como? Mudando a propriedade display dela de block para none.

 

Se você alterar a propriedade display para none de qualquer objeto html você vai fazer com que ele deixe de existir em sua tela.

 

Isso ai é beeeeeeeem basicão de CSS e HTML :P

De uma lida no w3schools que ensina a fazer caso queira ver como funciona.

 

Ouuu simplesmente baixe o firebug do firefox, entre em qualquer site, clique para inspecionar um elemento e coloque no style daquele elemento um display:none... e você vai ver que o objeto simplesmente vai desaparecer de sua tela... simples assim ;)

 

O jeito que você fez, em teoria não está errado, mas como eu disse. O objeto vai continuar embeded sobre seu html, ou seja se estiver sobre algum link... o objeto ainda vai ficar ali atrapalhando o meio de campo. rs

 

A maneira que expliquei é uma das mais eficases... claro que existem outras... que usam fscommand ou até mesmo um _root.unloadMovie... que vai causar o descarregamento completo do SWF em sua tela... mas não sei se vai funcionar... faz tempo que não testo esse tipo de coisa.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, você sabe ... eu invento.

Se quiser conferir, publiquei um exercício (bem tosco), de um swf com um popup.

No IE vai beleza, no FF dá galho. Clique aqui

 

Fui conferir no globo.com, realmente show de bola.

 

Pode dar um toque como usar o Javascript? Eu publico o código + html.

Exemplo beeeeem tosco

 

 

vá em seu html e dentro do header coloque assim:

<head>
<script>
function unLoadDiv(){
	document.getElementById('id da div').style.display = 'none';
}
</script>
</head>

Flash

bt.onPress = function(){
 getURL("javascript: unLoadDiv();");
}

Se estiver em um ambiente web ou local isso deve funcionar.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada, já me achei aqui com o JS.

Removi o arquivo anterior e adicionei outro para testar online.

Não tem links, mas já serve pra começar.

O JavaScript para o botão é um link sobreposto ao swf em um div absoluta, nada no Flash. Era o que eu tinha, mais tosco ainda.

Me falta observar sua sugestão, que para mim, só acrescenta.

Tá no ar: Clique aqui

Valeu mesmo.

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só mais uma pergunta, tenho um script para popup em html (exibição de 5 segundos e fecha automaticamente), é possível adaptar para um swf ou preciso também adicionar algo mais no action?

Nunca me ocorreu essa possibilidade, só agora.

 

fscommand só usei para fechar executáveis em Flash, mas isso não é aceito pelo DW. Já tentei esta proeza quando estava tentando fazer o popup. Também já cheguei a instalar o DW CS3 para tentar usar o recurso da timeline para reduzir a div para 1 pixel, mas também nao funcionou.

 

Embora não tenha conhecimento, pude compreender o que você mencionou, seria algo como tirar o "foco" de um objeto (sei que não é o termo mais adequado).

Nesse ponto o IE pode ter zilhões de defeitos, mas faz essa mágica sem nenhum código.

 

Pelo interesse no assunto acabei invadindo a pergunta do colega, peço desculpas.

Espero que ao menos tenha sido útil. Se não der tempo de obter o código online, me avise que eu publico.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você tem um código html que já fecha em 5 segundos um pop up...

Você pode tentar colocar um object(swf) lá e ver se ele fecha.

 

Nunca testei, mas se ele esconde o objeto deve funcionar tbm.

 

Qualquer coisa que faça com que o html esconda a presença do objeto é valido para fazer com que o swf saia da tela... e não fique na frente de links.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada, berseck. Eu vejo isso.

 

Bom vou remover o arquivo do server, e aguardar o retorno do Wawa.

Se a necessidade do colega for a mesma posso compartilhar o JavaScript, é só avisar.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

A maneira que expliquei é uma das mais eficases... claro que existem outras... que usam fscommand ou até mesmo um _root.unloadMovie... que vai causar o descarregamento completo do SWF em sua tela... mas não sei se vai funcionar... faz tempo que não testo esse tipo de coisa.

 

Talvez possa ser útil para quem compreenda o uso:

 

function go()
{
    if (_root.id.length > 0)
    {
        if (_root.ie == "true")
        {
            getURL("FSCommand:go", _root.lnk);
        }
        else
        {
            getURL(_root.lnk, "_blank");
        } 
    } 
} 
function fechar()
{
    if (_root.id.length > 0)
    {
        if (_root.ie == "true")
        {
            fscommand("fecha");
        }
        else
        {
            getURL("javascript:fechaBanner(\"" + _root.div + "\");", "");
        } 
    } 
} 
setProperty("", _quality, "BEST");
MovieClip.prototype.tabEnabled = false;
Button.prototype.tabEnabled = false;
Stage.scaleMode = "noScale";
Stage.align = "TL";

Sem perguntas, ainda tenho muito o que estudar. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é, mas o pessoal do Globo.com usa.

Testei o JS com os links na página e o swf sobreposto, o que tenho é tosco mas funciona.

 

Quero aprender a vincular o JS com o swf. Gosto da opção do botão fechar + timer.

Vi o tuto do fórum (hinom), mas é para AS2. Ainda não olhei no w3schools, nem no Google.

Mas vou procurar.

 

... e o Wawa nem tchuns, tomei conta geral.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha ... quer aprender a usar bem o javascript com flash procura por

ExternaInterface

 

Eis aqui um exemplo da Classe pro AS 3.0

package {
	import flash.display.Sprite;
	import flash.events.*;
	import flash.external.ExternalInterface;
	import flash.text.TextField;
	import flash.utils.Timer;
	import flash.text.TextFieldType;
	import flash.text.TextFieldAutoSize;

	public class ExternalInterfaceExample extends Sprite {
 	private var input:TextField;
 	private var output:TextField;
 	private var sendBtn:Sprite;

 	public function ExternalInterfaceExample() {
 	input = new TextField();
 	input.type = TextFieldType.INPUT;
 	input.background = true;
 	input.border = true;
 	input.width = 350;
 	input.height = 18;
 	addChild(input);

 	sendBtn = new Sprite();
 	sendBtn.mouseEnabled = true;
 	sendBtn.x = input.width + 10;
 	sendBtn.graphics.beginFill(0xCCCCCC);
 	sendBtn.graphics.drawRoundRect(0, 0, 80, 18, 10, 10);
 	sendBtn.graphics.endFill();
 	sendBtn.addEventListener(MouseEvent.CLICK, clickHandler);
 	addChild(sendBtn);

 	output = new TextField();
 	output.y = 25;
 	output.width = 450;
 	output.height = 325;
 	output.multiline = true;
 	output.wordWrap = true;
 	output.border = true;
 	output.text = "Initializing...\n";
 	addChild(output);

 	if (ExternalInterface.available) {
 	try {
 	output.appendText("Adding callback...\n");
 	ExternalInterface.addCallback("sendToActionScript", receivedFromJavaScript);
 	if (checkJavaScriptReady()) {
 	output.appendText("JavaScript is ready.\n");
 	} else {
 	output.appendText("JavaScript is not ready, creating timer.\n");
 	var readyTimer:Timer = new Timer(100, 0);
 	readyTimer.addEventListener(TimerEvent.TIMER, timerHandler);
 	readyTimer.start();
 	}
 	} catch (error:SecurityError) {
 	output.appendText("A SecurityError occurred: " + error.message + "\n");
 	} catch (error:Error) {
 	output.appendText("An Error occurred: " + error.message + "\n");
 	}
 	} else {
 	output.appendText("External interface is not available for this container.");
 	}
 	}
 	private function receivedFromJavaScript(value:String):void {
 	output.appendText("JavaScript says: " + value + "\n");
 	}
 	private function checkJavaScriptReady():Boolean {
 	var isReady:Boolean = ExternalInterface.call("isReady");
 	return isReady;
 	}
 	private function timerHandler(event:TimerEvent):void {
 	output.appendText("Checking JavaScript status...\n");
 	var isReady:Boolean = checkJavaScriptReady();
 	if (isReady) {
 	output.appendText("JavaScript is ready.\n");
 	Timer(event.target).stop();
 	}
 	}
 	private function clickHandler(event:MouseEvent):void {
 	if (ExternalInterface.available) {
 	ExternalInterface.call("sendToJavaScript", input.text);
 	}
 	}
	}
}

E o html deve ser +/- assim:

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>ExternalInterface() Example in a Form</title>
<link href="admin.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
#jsdiv {
	color: #FFFFFF;
	background-color: #333333;
	height: 375px;
	width: 350px;
	text-align: center;
}
#fromflash {
	background-color: #333333;
	padding: 2px;
	height: 56px;
	width: 213px;
	border: 1px solid #ABACFE;
	margin-top: 0px;
	margin-bottom: 0px;
	color: #FFFFFF;
	font-size: 11px;
	text-align: left;
}
#sendtoflashbtn {
	width: 213px;
}
#toflash {
	background-color: #666666;
	padding: 2px;
	height: 56px;
	width: 213px;
	border: 1px solid #ABACFE;
	margin-top: 0px;
	color: #FFFFFF;
	font-size: 11px;
	font-family: Arial, Helvetica, sans-serif;
}
.style1 {font-size: 24px}
-->
</style>
<script type="text/javascript">
function flash_to_javascript(textfromflash){
	document.getElementById("fromflash").innerHTML = textfromflash;
	returntoflash = document.getElementById("toflash").value;
	return(returntoflash);
}
function javascript_to_flash(texttoflash) {
	var textfromflash = thisMovie("extinterfaceexample").asFunc(texttoflash);
	document.getElementById("fromflash").innerHTML = textfromflash;
	return(true);
}
function thisMovie(movieName) {
	var isIE = navigator.appName.indexOf("Microsoft") != -1;
	return (isIE) ? window[movieName] : document[movieName];
}
</script>
<script type="text/javascript" src="/swfobject.js"></script>
<script type="text/javascript" src="swfformfix2.js"></script>
</head>

<body>
<center>
<form id="exampleform" name="exampleform">
<table border="0" cellspacing="0" cellpadding="0">
	<tr>
		<th scope="col"><span class="style1">Flash</span></th>
		<th scope="col"><span class="style1">HTML / Javascript </span></th>
	</tr>
	<tr>
		<td bgcolor="#333333">

		<!-- SWFObject code generated by Tera Technologies' HTML2SWFObject http://devel.teratechnologies.net/swfhelp/ -->
<div id="swfdiv_extinterfaceexample" style="width: 350px; height: 375px;">
<embed id="extinterfaceexample" height="375" width="350" quality="high" bgcolor="#333333" name="extinterfaceexample" src="extinterfaceexample.swf" type="application/x-shockwave-flash"/>
</div>
<script type="text/javascript">
// <![CDATA[
 //var so = new SWFObject("extinterfaceexample.swf", "extinterfaceexample", "350", "375", "7.0.19", "#333333");
 // IE seems to have still more problems - cached SWFs will cause problems - even if you setTimeout(so.write(...),1000) them
 // my solution: use my noCacheIE() function to prevent the SWF from being cached (you also need SWFFormFix2).
 var so = new SWFObject(noCacheIE("extinterfaceexample.swf"), "extinterfaceexample", "350", "375", "9.0.0.0", "#333333");
 so.addParam("quality", "high");
 so.write("swfdiv_extinterfaceexample");
// ]]>
</script>
<!-- End SWFObject code --></td>
		<td align="center" bgcolor="#333333"><div id="jsdiv">
			<p> </p>
			<p><br />

				<br />
				Response from Flash: 
			<center><div id="fromflash"> </div></center>
			</p>Send this text to Flash :
			<br />
			<textarea name="toflash" id="toflash">I am javascript</textarea>
			<br />
			<br />
			<input type="button" id="sendtoflashbtn" name="Submit" value="Send Text to Flash" onclick="javascript_to_flash(document.getElementById('toflash').value);return false;"/>

		</div></td>
	</tr>
</table>
</form>
<p><a href="extinterfaceexample.fla">Download the FLA for the SWF on the left.</a> <br />
	<br />
I hope you enjoyed this sample application - Steve Kamerman.<br />
P.S. You should really <a href="http://www.teratechnologies.net/stevekamerman">visit my blog</a> to catch up on some new developments! </p>

<!-- phpmyvisites -->
<a href="http://www.phpmyvisites.net/" title="Free web analytics, website statistics"
onclick="window.open(this.href);return(false);"><script type="text/javascript">
<!--
var a_vars = Array();

var pagename='';

var phpmyvisitesSite = 6;
var phpmyvisitesURL = "http://www.teratechnologies.net/phpmv2/phpmyvisites.php";'>http://www.teratechnologies.net/phpmv2/phpmyvisites.php";
//-->
</script>
<script language="javascript" src="http://www.teratechnologies.net/phpmv2/phpmyvisites.js" type="text/javascript"></script>
<noscript><p>Free web analytics, website statistics
<img style="margin-bottom: 5px;border:0;" src="http://www.teratechnologies.net/phpmv2/phpmyvisites.php" alt="Statistics" />
</p></noscript></a>
<!-- /phpmyvisites --></center>
</body>
</html>

Essa foi de mão beijada heim =X

 

Mas tem no help do flash AHAHAHA

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nem tanto né, demorou... Quero muito!

Tudo bem, tem no help, no Google e o K7, falta é saber usar.

 

Mas obrigada assim mesmo, já sei que não bati tambor em vão,rsrs.

 

Adquiri o Guia de Referência AS3 (Alta Boobks) e vou encarar o CD do Thelon, minha ignorância tá doendo.

 

Abraços :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, você sabe ... eu invento.

Se quiser conferir, publiquei um exercício (bem tosco), de um swf com um popup.

No IE vai beleza, no FF dá galho. Clique aqui

 

Fui conferir no globo.com, realmente show de bola.

 

Pode dar um toque como usar o Javascript? Eu publico o código + html.

Exemplo beeeeem tosco

 

 

vá em seu html e dentro do header coloque assim:

<head>
<script>
function unLoadDiv(){
	document.getElementById('id da div').style.display = 'none';
}
</script>
</head>

Flash

bt.onPress = function(){
 getURL("javascript: unLoadDiv();");
}

Se estiver em um ambiente web ou local isso deve funcionar.

 

Abraços

 

Cara, realmente funciona pra fechar banner. Mas e pra ele continuar ali só que sem sobrepor links?

Por exemplo: Têm um banner la com 120 px de altura, ai você passa o mouse e ele fica com 350 px, e quando você tira o mouse ele volta a ter 120 px.

Eu fiz o Banner e ele funciona no IE com wmode transparent, mas nos outros navegadores ele ficasobrepondo os links.

Ajudem ai por favor.

Abraço a todos.

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.