twitter
    Find out what I'm doing, Follow Me :)

sábado, 3 de julho de 2010

TJPZOOM Internet Explorer (IE) Bug Fix

As pessoas que trabalham com desenvolvimento software muitas vezes precisam colocar ferramentas no software que estão indiretamente ligadas a solução do problema. Essas ferramentas podem ser muito sofisticada, mas tão sofisticadas que o tempo para desenvolver a ferramenta é maior que o software. Por isso que muitas vezes temos que recorrer as ferramentas prontas que estão espalhadas pela web.
As vezes é difícil achar uma ferramenta que se encaixe totalmente ao seu sistema e realmente resolva o problema, por isso é necessário algumas horas de pesquisa. No meu caso eu precisava de uma feramenta de zoom de imagens que fosse simples de aplicar e permitisse aumentar e diminuir a ampliação da imagem. Depois de muitas pesquisas encontrei o TJPZOOM, fácil de aplicar no sistema e todo mundo gostou!
Como trabalho em sistema Linux os browsers que testei foi o Firefox, Chrome e o Opera. Estava tudo beleza, até que finalmente testamos no micro do cliente que usava IE!
Em qualquer browser a lente(caixa cinza) estava na mesma posição do mouse (seta branca).problema01
No browser do cliente (Internet Explorer 7), por algum motivo a lente(caixa cinza) estava afastada do ponteiro do mouse(seta branca).problema02
macaco-serio Triste, estava tudo perfeito! Tudo! Mas a incompatibilidade entre os browsers me pegou! Teria que procurar outra feramenta de zoom ou tentar arrumar essa… escolhi tentar arrumar!
Não sei exatamente porque funcionou, mas fiquei mexendo… mudando as variáveis e enfim… funcionou! Então se estiver com o mesmo problema que o meu, tente modificar esse trecho do código:
obs: Só fiz essa alteração para os IE acima do 7, pois não sei se o 6 precisa dessa alteração. Se ele precisar você pode modificar o código para alteração funcionar para qualquer IE.
function TJPhandlemouse(evt,obj) {
var evt = evt?evt:window.event?window.event:null; 
if(!evt) { return false; }
if(evt.pageX) {
nowx=evt.pageX-TJPfindposx(obj)-TJPadjustx;
nowy=evt.pageY-TJPfindposy(obj)-TJPadjusty;
} else {
if(document.documentElement && document.documentElement.scrollTop) {
nowx=evt.clientX+document.documentElement.scrollLeft-TJPfindposx(obj)-TJPadjustx;
nowy=evt.clientY+document.documentElement.scrollTop-TJPfindposy(obj)-TJPadjusty;
} else {
//Modified by  Ulisses de Almeida to work in IE
if(getInternetExplorerVersion() >= 7.0){
nowx=evt.x+document.body.scrollLeft-TJPadjustx;
nowy=evt.y+document.body.scrollTop-TJPadjusty;
}
else{
nowx=evt.x+document.body.scrollLeft-TJPfindposx(obj)-TJPadjustx;
nowy=evt.y+document.body.scrollTop-TJPfindposy(obj)-TJPadjusty;
}
}
}
if(evt.type == 'mousemove') {
TJPsetwin(obj,nowx,nowy);
} else if(evt.type == 'mousedown') {
TJPmouse=1; //left: 1, middle: 2, right: 3
TJPmousey=nowy;
TJPmousex=nowx;
} else if(evt.type =='mouseup') {
TJPmouse=0;
} else if(evt.type =='mouseout') {
TJPmouse=0;
if(navigator.appVersion.indexOf('Mac') == -1 || navigator.appVersion.indexOf('MSIE') == -1) { //hi Mac IE
x=obj.parentNode;
x.removeChild(x.getElementsByTagName('div')[0]);
x.removeChild(x.getElementsByTagName('div')[0]);
}
}
}
// Function from MSDN Giorgio Sardo Blog
function getInternetExplorerVersion() {
var rv = -1; // Return value assumes failure.
if (navigator.appName == 'Microsoft Internet Explorer') {
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null)
rv = parseFloat(RegExp.$1);
}
return rv;
}


Se você não quiser alterar o Java script na mão, você pode baixar a minha versão do código fonte com a alteração [download]. Espero ter ajudado! Qualquer coisa que você desejar me dizer, por favor deixe um comentário!

Nenhum comentário:

Postar um comentário