Ir para conteúdo

POWERED BY:

Arquivado

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

««Påþs2»»

Problema com .js

Recommended Posts

Bom, tou com uma dúvidazinha aqui de JavaScript...

 

Eu fiz um site que tem uma área administrativa cheia de textareas (com names diferentes) na mesma página (editar.php?pagina=blablabla)...

 

Essa página (editar.php) puxa um .js simples de incluir BBCodes, mais ou menos como aqui no fórum...

 

A questão é que esse .js usa o nome do textarea várias vezes e, como são vários nomes diferentes, fica dando erro de depuração na página...

 

Então, a dúvida é como consertar isso...

 

var theSelection = false;var clientPC = navigator.userAgent.toLowerCase();var clientVer = parseInt(navigator.appVersion);var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));var is_nav  = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1)				&& (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1)				&& (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1));var is_win   = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1));var is_mac	= (clientPC.indexOf("mac")!=-1);var Bold  = 0;var Italic = 0;var Underline = 0;var fc = 0;var fs = 0;var ft = 0;var center = 0;var right = 0;var left = 0;var justify = 0;function storeCaret(textEl) {	if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();}function PostWrite(ToAdd) {	if (document.post.mensagem.createToAddRange && document.post.mensagem.caretPos) {		var caretPos = document.post.mensagem.caretPos;		caretPos.text = caretPos.ToAdd.charAt(caretPos.ToAdd.length - 1) == ' ' ? ToAdd + ' ' : ToAdd;		document.post.mensagem.focus();	} else {		document.post.mensagem.value  += ToAdd;		document.post.mensagem.focus();	}}function emoticon(text) {	if (document.post.mensagem.createTextRange && document.post.mensagem.caretPos) {		var caretPos = document.post.mensagem.caretPos;		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;		document.post.mensagem.focus();	} else {		document.post.mensagem.value  += text;		document.post.mensagem.focus();	}}function BBCbold() {	if ((clientVer >= 4) && is_ie && is_win) {		theSelection = document.selection.createRange().text;		if (theSelection != '') {		document.selection.createRange().text = "<b>" + theSelection + "</b>";		document.post.mensagem.focus();		return;		}	}	if (Bold == 0) {		ToAdd = "<b>";		document.post.bold.src = "../images/bold1.gif";		Bold = 1;	} else {		ToAdd = "</b>";		document.post.bold.src = "../images/bold.gif";		Bold = 0;	}	PostWrite(ToAdd);}function BBCitalic() {	if ((clientVer >= 4) && is_ie && is_win) {		theSelection = document.selection.createRange().text;		if (theSelection != '') {		document.selection.createRange().text = "<i>" + theSelection + "</i>";		document.post.mensagem.focus();		return;		}	}	if (Italic == 0) {		ToAdd = "<i>";		document.post.italic.src = "../images/italic1.gif";		Italic = 1;	} else {		ToAdd = "</i>";		document.post.italic.src = "../images/italic.gif";		Italic = 0;	}	PostWrite(ToAdd);}function BBCunder() {	if ((clientVer >= 4) && is_ie && is_win) {		theSelection = document.selection.createRange().text;		if (theSelection != '') {		document.selection.createRange().text = "<u>" + theSelection + "</u>";		document.post.mensagem.focus();		return;		}	}	if (Underline == 0) {		ToAdd = "<u>";		document.post.under.src = "../images/under1.gif";		Underline = 1;	} else {		ToAdd = "</u>";		document.post.under.src = "../images/under.gif";		Underline = 0;	}	PostWrite(ToAdd);}function BBCurl() {	var FoundErrors = '';	var enterURL   = prompt("Escreva a URL do site", "http://");	var enterTITLE = prompt("Escreva o nome do site", "Nome do site");	if (!enterURL)	{		FoundErrors += "Você não escreveu a URL";	}	if (!enterTITLE)  {		FoundErrors += "Você não escreveu o nome do site";	}	if (FoundErrors)  {		alert("Erro: "+FoundErrors);		return;	}	var ToAdd = "<a href=\""+enterURL+"\" target=\"_blank\">"+enterTITLE+"</a>";	document.post.mensagem.value+=ToAdd;	document.post.mensagem.focus();}function BBCimg() {	var FoundErrors = '';	var enterURL   = prompt("Escreva a URL da imagem","http://");	if (!enterURL) {		FoundErrors += "Você não escreveu a URL da imagem";	}	if (FoundErrors) {		alert("Erro: "+FoundErrors);		return;	}	var ToAdd = "<img src=\""+enterURL+"\" border=\"0\">";	document.post.mensagem.value+=ToAdd;	document.post.mensagem.focus();}function BBCjustify() {	if ((clientVer >= 4) && is_ie && is_win) {		theSelection = document.selection.createRange().text;		if (theSelection != '') {		document.selection.createRange().text = "<div align=\"justify\">" + theSelection + "</div>";		document.post.mensagem.focus();		return;		}	}	if (justify == 0) {		ToAdd = "<div align=\"justify\">";		document.post.justify.src = "../images/justify1.gif";		justify = 1;	} else {		ToAdd = "</div>";		document.post.justify.src = "../images/justify.gif";		justify = 0;	}	PostWrite(ToAdd);}function BBCleft() {	if ((clientVer >= 4) && is_ie && is_win) {		theSelection = document.selection.createRange().text;		if (theSelection != '') {		document.selection.createRange().text = "<div align=\"left\">" + theSelection + "</div>";		document.post.mensagem.focus();		return;		}	}	if (left == 0) {		ToAdd = "<div align=\"left\">";		document.post.left.src = "../images/left1.gif";		left = 1;	} else {		ToAdd = "</div>";		document.post.left.src = "../images/left.gif";		left = 0;	}	PostWrite(ToAdd);}function BBCright() {	if ((clientVer >= 4) && is_ie && is_win) {		theSelection = document.selection.createRange().text;		if (theSelection != '') {		document.selection.createRange().text = "<div align=\"right\">" + theSelection + "</div>";		document.post.mensagem.focus();		return;		}	}	if (right == 0) {		ToAdd = "<div align=\"right\">";		document.post.right.src = "../images/right1.gif";		right = 1;	} else {		ToAdd = "</div>";		document.post.right.src = "../images/right.gif";		right = 0;	}	PostWrite(ToAdd);}function BBCcenter() {	if ((clientVer >= 4) && is_ie && is_win) {		theSelection = document.selection.createRange().text;		if (theSelection != '') {		document.selection.createRange().text = "<div align=\"center\">" + theSelection + "</div>";		document.post.mensagem.focus();		return;		}	}	if (center == 0) {		ToAdd = "<div align=\"center\">";		document.post.center.src = "../images/center1.gif";		center = 1;	} else {		ToAdd = "</div>";		document.post.center.src = "../images/center.gif";		center = 0;	}	PostWrite(ToAdd);}function BBCft() {	if ((clientVer >= 4) && is_ie && is_win) {		theSelection = document.selection.createRange().text;		if (theSelection != '') {		document.selection.createRange().text = "<font face="+document.post.ft.value+">" + theSelection + "</font>";		document.post.mensagem.focus();		return;		}	}	ToAdd = "<font face="+document.post.ft.value+">"+" "+"</font>";	PostWrite(ToAdd);}function BBCfs() {	if ((clientVer >= 4) && is_ie && is_win) {		theSelection = document.selection.createRange().text;		if (theSelection != '') {		document.selection.createRange().text = "<font size="+document.post.fs.value+">" + theSelection + "</font>";		document.post.mensagem.focus();		return;		}	}	ToAdd = "<font size="+document.post.fs.value+">"+" "+"</font>";	PostWrite(ToAdd);}function BBCfc() {	if ((clientVer >= 4) && is_ie && is_win) {		theSelection = document.selection.createRange().text;		if (theSelection != '') {		document.selection.createRange().text = "<font color="+document.post.fc.value+">" + theSelection + "</font>";		document.post.mensagem.focus();		return;		}	}	ToAdd = "<font color="+document.post.fc.value+">"+" "+"</font>";	PostWrite(ToAdd);}
Bom, é isso..

Espero resposta e feliz ano novo ae.. http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olhando o script por cima, dá para ver que vai ser um pouco complicado de mudar tudo na mão. Eu recomendo você fazer um outro script para receber informações na função, como o nome do campo, por exemplo.

Como na função para adicionar o emoticon, você poderia fazer assim:

function emoticon(text, campo) {	if (document.post.elements[campo].createTextRange && document.post.elements[campo].caretPos) {		var caretPos = document.post.elements[campo].caretPos;		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;		document.post.elements[campo].focus();	} else {		document.post.elements[campo].value  += text;		document.post.elements[campo].focus();	}}
Depois na hora de chamar a função, passaria o nome do campo que você quer adicionar o emoticon.

emoticon(":D", "algum_campo");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, outro erro... :P

 

Tou aqui tentando modificar o código pra ficar melhor...

 

A função de botar negrito, por exemplo...

O if verifica se eu selecionei uma parte do texto e faz entrar <b> antes e </b> depois do selecionado...

O else é pra adicionar <b></b> direto, caso eu não tenha selecionado nada...

 

Eu consegui arrumar o else e tá funcionando certinho, contanto que eu não use a função do if antes, já que, depois de usá-la, a função do else quebra e começa a adicionar <b></b> antes do topo do site, ao invés de entrar no campo de texto, como antes... http://forum.imasters.com.br/public/style_emoticons/default/natal_ohmy.gif

 

Deu pra entender? =P

 

var theSelection = false;var clientPC = navigator.userAgent.toLowerCase();var clientVer = parseInt(navigator.appVersion);var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));var is_nav  = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1)				&& (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1)				&& (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1));var is_win   = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1));var is_mac	= (clientPC.indexOf("mac")!=-1);var Bold  = 0;var Italic = 0;var Underline = 0;var fc = 0;var fs = 0;var ft = 0;var center = 0;var right = 0;var left = 0;var justify = 0;function storeCaret(textEl) {	if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();}function PostWrite(ToAdd, campo) {	if (document.post.elements[campo].createToAddRange && document.post.elements[campo].caretPos) {		var caretPos = document.post.elements[campo].caretPos;		caretPos.text = caretPos.ToAdd.charAt(caretPos.ToAdd.length - 1) == ' ' ? ToAdd + ' ' : ToAdd;		document.post.elements[campo].focus();	} else {		document.selection.createRange().text  += ToAdd;		document.post.elements[campo].focus();	}}function BBCbold(campo) {	if ((clientVer >= 4) && is_ie && is_win) {		theSelection = document.selection.createRange().text;		if (theSelection != '') {			document.selection.createRange().text = "<b>" + theSelection + "</b>";			document.post.elements[campo].focus();		}		else {			document.selection.createRange().text += "<b></b>";		}	}}
PS: o document.post.elements[campo].focus(); que tava quebrando a função do else e quando tirei ficou certo, mas mesmo tirando da função do if continua o erro... =|

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apenas troque a linha do else

document.selection.createRange().text += "<b></b>";
para inserir as tags b's dentro do campo:

document.post.elements[campo].value += "<b></b>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que assim, quando não tem texto selecionado, ele adiciona o <b></b> no final de tudo que tá escrito e não onde tá o trocinho do mouse...

 

Mas pelo menos a função do else não quebra quando a do if é executada..hehehe... :P

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.