Avatar billede spetersen Nybegynder
23. november 2006 - 10:07 Der er 4 kommentarer og
1 løsning

Problem m. Javascript i Firefox 1.5 på UNIX OS

I forbindelse med min brugertest af et website jeg bygger, har jeg en klage fra en bruger som ikke kan se min feedback-form og pop-up vinduerne i min portfolio. Han bruger Firefox 1.5 og hans Firefox ligger ret sikkert på et UNIX OS.

Jeg tror det må være et Javascript problem, jeg har brugt Dreamweaver til hjælp til at lave javascripts'ene, som jeg ikke selv har 100% check over at kode i hånden endnu.

En af problemsiderne er f.eks [ http://www.pandoradesign.biz/index.html ]http://www.pandoradesign.biz/index.html , linket "feedback" nederst, javascriptet ser ud som følger:

I head:

<script language="JavaScript" type="text/JavaScript">
<!--
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
  if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
//-->
</script>

og i body (den link der ikke virker for brugeren):

<a href="#" onClick="MM_openBrWindow('http://www.pandoradesign.dk/phpfg/use/feedback/form1.html','feedback','scrollbars=yes,resizable=yes,width=650,height=600')" onMouseOver="MM_swapImage('feedback','','images/mo_feedback.gif',1)" onMouseOut="MM_swapImgRestore()"><img src="images/feedback.gif" alt="send your feedback" name="feedback" width="60" height="30" border="0" id="feedback"></a>

En af de andre sider med link der ikke virker hos brugeren er f.eks. [ http://www.pandoradesign.biz/portfolio/pf_imgrate.html ] http://www.pandoradesign.biz/portfolio/pf_imgrate.html , linken "view case" (imagemap) her ser javascriptet ud som følger:

I head:

<script language="JavaScript" type="text/JavaScript">
<!--
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
  if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
//-->
</script>

og i body (den link der ikke virker for brugeren):

<map name="viewcase" id="viewcase">
  <area shape="rect" coords="245,295,308,313" href="#" alt="view case" onClick="MM_openBrWindow('pf_pop/pf_pop_imgrate_a.html','imgrate','scrollbars=yes,resizable=yes,width=600,height=450')">
</map>


Er der nogen her der kan se hvorfor det ikke virker for brugeren?

På forhånd tak for svar...


Susanne
Avatar billede ducks Nybegynder
23. november 2006 - 11:04 #1
Er fejlen der også ved Firefox 2? Nu kommer det selvfølgelig helt an på holdning, men jeg mener ikke at, man altid skal programmere bagud kompatibelt, det er også brugerens ansvar at opdatere sit software - især når det er gratis.
Avatar billede olebole Juniormester
23. november 2006 - 11:16 #2
<ole>

spetersen >> Hvad betyder det præcist, at han ikke kan se ... hvad kan han se - og hvad kan han ikke se?

ducks >> det er desværre kun en holdning, man har råd til at have, hvis man ikke forlanger penge for sine koder.
Jeg medgår dog gerne, at det stort set er umuligt at være bagudkompatibel i forhold til FF, da der dagligt kommer patches, der ofte introducerer to nye fejl for hver, der rettes  =)

/mvh
</bole>
Avatar billede spetersen Nybegynder
23. november 2006 - 12:36 #3
>Er fejlen der også ved Firefox 2?

Jeg har selv testet i mange browsere, incl. Firefox 2.0 og jeg har ingen problemer. Min Firefox ligger dog på et Windows OS så jeg ved ikke om der kan være noget OS-relateret...

>Hvad betyder det præcist, at han ikke kan se ... hvad kan han se - og hvad kan han ikke se?

Det han siger er, at 'linken fører til samme side' (#?) og han ser åbenbart ikke de nye vinduer som skulle åbne f.eks. når han klikker på 'view case'i min portfolio. Jeg har ham faktisk mistænkt for at sidde med en slags pop-up-blocker som slår de nye vinduer ihjel, men de er jo window.open v. onclick og det blokerer min egen popup-blocker ikke engang.

Susanne
Avatar billede psykochicken Nybegynder
23. november 2006 - 17:19 #4
Du kan tilføje return false til din onclick-funktion. Da onclick-funktionen udføres først, vil det hindre at opener-siden går til href="#" (sig selv).

Du kan også ændre dine links til noget ala:
<a href="http://www.pandoradesign.dk/phpfg/use/feedback/form1.html" onClick="MM_openBrWindow(this.href,'feedback','scrollbars=yes,resizable=yes,width=650,height=600');return false;"...osv

Så burde opener-siden kun vil gå til href-en hvis brugeren har slået javascript fra og ellers åbne popup-en.

/psc
Avatar billede spetersen Nybegynder
26. november 2006 - 23:33 #5
En nærmere diskussion med brugeren har afklaret at han klager fordi mit website er 'javascript-dependent', og han synes jeg skulle designe så websitet kan ses for brugere der har javascript slået fra. Det er derfor blevet en anden diskussion, men jeg takker for forsøgene på at hjælpe.

Susanne
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester