2012-11-10 12 views
6

Ho realizzato un tipo simile di visualizzatore di immagini menzionato nel sito sottostante per il mio sito web. http://www.javascriptkit.com/script/script2/backbox/ Il visualizzatore di immagini funziona perfettamente in Chrome ma non funziona in Internet Exlporer; Non ho fornito i dettagli del mio sito web per motivi di sicurezza, ma visualizzi il problema incollando copia sotto il link in Chrome e Internet Explorer. http://www.javascriptkit.com/script/script2/backbox/Il visualizzatore di immagini Javascript non funziona in Internet Explorer

Clicca l'immagine nel link qui sopra e vedere l'errore in Internet Explorer & vedere lo stesso in altro browser per vedere la sua condizione di lavoro ... PFB snap shot

Può uno qualsiasi dei dici perché non funziona in Internet Explorer?

errore messaggio da IE zona della consolle strumenti F12 devolper è:

SCRIPT5007: Unable to get value of the property 'replace': object is null or undefined effects.js, line 1 character 1747

effects.js = http://www.javascriptkit.com/script/script2/backbox/js/effects.js

Se avete bisogno di file di esempio js, ​​si prega di ottenere che da http://www.javascriptkit.com/script/script2/backbox/backboxfiles.zip

HTML utilizzato è;

<link rel="stylesheet" href="backbox.css" type="text/css" /> 
<script type="text/javascript" src="js/prototype.compressed.js"></script> 
<script type="text/javascript" src="js/scriptaculous.js?load=effects"></script> 
<script type="text/javascript" src="js/lightbox.js"></script> 
<script type="text/javascript" src="js/dhtmlHistory.js"></script> 
<script type="text/javascript" src="js/customsignsheader.js"></script> 

<div onclick="dhtmlHistory.add('location1',{message: 'backbox'});countdown()"> 
<a href="images/babyhand.jpg" rel="lightbox[slide]" caption="A Bunch of Grapes"> 
<img src="images/sunset.jpg" alt="lime" width="400" height="300" border="0" /></a> 
</div> 

<a href="images/desert.jpg" rel="lightbox[slide]" caption="Sunflower"></a> 
<a href="images/beech.jpg" rel="lightbox[slide]" caption="Dolphin"></a> 
<a href="images/lime.jpg" rel="lightbox[slide]" caption="Waterfall"></a> 

<script type="text/javascript" src="js/customsignsfooter.js"></script> 

enter image description here

+0

E 'la registrazione degli errori in IE – defau1t

+1

Si prega di copiare incollare questo link e vedere il http://www.javascriptkit.com/script/script2/backbox/ uscita Clicca sull'immagine – logan

+0

funziona bene per me in IE8 – ManseUK

risposta

3

per quanto riguarda la vostra preoccupazione perché questo si verifica in IE e non in cromo, che è a causa di questa condizione if(/MSIE/.test(navigator.userAgent) che è vero quando il browser è IE

per correggere il problema, come lei ha detto in un commento è possibile aggiungere una condizione "indefinita".
basta sostituire questa linea:

if(/MSIE/.test(navigator.userAgent)){Element.setStyle(_10,{filter:Element.getStyle(_10,"filter").replace(/alpha\([^\)]*\)/gi,"")+"alpha(opacity="+_11*100+")"});} 

con:

if(/MSIE/.test(navigator.userAgent)){var filterStyle=Element.getStyle(_10,"filter");if(typeof(filterStyle)!="undefined"){Element.setStyle(_10,{filter:filterStyle.replace(/alpha\([^\)]*\)/gi,"")+"alpha(opacity="+_11*100+")"});}} 

e questa linea:

if(/MSIE/.test(navigator.userAgent)){Element.setStyle(_10,{filter:Element.getStyle(_10,"filter").replace(/alpha\([^\)]*\)/gi,"")});} 

con:

if(/MSIE/.test(navigator.userAgent)){var filterStyle=Element.getStyle(_10,"filter");if(typeof(filterStyle)!="undefined"){Element.setStyle(_10,{filter:filterStyle.replace(/alpha\([^\)]*\)/gi,"")});}} 

nel effects.js di file

+0

Grazie mille .. lavoro bene .. :) Ti ho premiato con 50 Taglie ... – logan

1

strumenti Open sviluppatori in IE (premere F12) e fare clic sulla scheda "Console". Si dovrebbe essere in grado di vedere in là che c'è un errore con lo script effects.js:

SCRIPT5007: Unable to get value of the property 'replace': object is null or undefined 
effects.js, line 1 character 1747 

Questo dovrebbe almeno dare qualche parte per iniziare la ricerca.

... e se siete pigri che, la linea reale di codice è in mancanza on è questo:

Element.getStyle(_10,"filter").replace(/alpha\([^\)]*\)/gi,"") 

La chiamata getStyle è chiaramente tornando nullo, quindi successivamente chiamando sostituire fallirà.

+1

Non sono riuscito a trovare alcun problema con la funzione di sostituzione; Si prega di trovare il file js completo qui e fammi il problema per favore; http://www.javascriptkit.com/script/script2/backbox/js/effects.js pls rispondi come 50 bounce che scadrà tra qualche giorno ... – logan

+0

Non stai guardando la cosa giusta. Non sto superando una palude di codice offuscato per trovare il problema, ma dovresti essere in grado di vedere facilmente che il problema è con questa chiamata: Element.getStyle (_10, "filter") - questo ovviamente restituisce null quindi successivamente chiamare la sostituzione su di esso non riesce. – adhocgeek

+0

perché questo non si verifica in chrome? Se ciò restituisce null, allora possiamo avere alcune condizioni di null se sostituire un valore. . Cosa dovrebbe restituire? Inoltre, per favore fatemi sapere perché funziona bene negli altri browser? – logan

1

Internet Explorer non dispone attualmente del supporto HTML5 completo. Pertanto, qualsiasi manipolazione di tag o elementi correlati a HTML5 fallirà. Vale la pena provare ad includere la libreria html5shiv, che fa credere a IE che questi tag esistano.

Problemi correlati