On Sun, 24 Jun 2007 06:29:11 +0200, Kim Ludvigsen <usenet@kimludvigsen.dk>
wrote:
> Er der nogen, der kan fortælle mig, hvorfor prisudregningen ikke virker
> i Firefox på denne side:
>
http://www.shop4all.dk/designpages/shop205/frmSubScProductConfigurationShop205.aspx
Puha, det ser godt nok skidt ud for dem, der har lavet javascripts'ene.
Det kan godt være, at man har behov for test-funktioner undervejs, men en
funktion som:
function test()
{
alert('YO');
}
bør slettes inden det publiceres.
En sjov ting er, at de har følgende i "__doPostBack"-funktionen:
if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) {
theform = document.Form1;
}
else {
theform = document.forms["Form1"];
}
Hvis de bare brugte document.forms["Form1"] til det hele.
Det egentlige problem ligger i funktionen "CalculatePrice", som konsekvent
benytter document.Form1, til at tilgå formen (og i stedet for at gemme
formen i en lokal variabel, så henter den den omkring 10 gange i én
funktion).
Dernæst tilgår de elementerne med <formnavn>.item("<elementsnavn>"), hvis
de brugte standardmetoden:
<formnavn>.elements["<elementnavn>"], så ville de også få fat på
elementerne.
Og så spørger de efter elementet "hidTopPrice", som ikke eksisterer,
derimod eksisterer "hidtopprice"
Så hvis de laver en replace på document.Form1, hvor de erstatter det med
document.forms["Form1"], og erstatter item med elements, og så lige ændrer
() efter item til [], så virker scriptet.
> Og også gerne hvorfor prisfelterne vises forkert i Firefox, men vises
> korrekt i Firefox med en IE6-UserAgent (jeg ved ikke, om dette skyldes
> et JavaScript).
Jeg er ikke helt sikker på, hvad du mener her, men via css
(
http://www.shop4all.dk/Media_butik205/stylesheet.css ) sættes:
..td_smallprice
{
background-image:url(../Media_Butik205//Productlist/smallpricebackground.gif);
background-repeat: no-repeat;
background-position:top left;
background-color:color: #000033;
}
Hvilket giver en mærkeligt placeret kasse bagved feltet, som ikke fylder
hele feltet.
IE tilpasser tilsyneladende et input[text]-felt til den omgivende boks,
hvilket andre browsere ikke gør.
Hvis der sættes style="width:82px;border:none;height:34px;" på
input-felterne, så passer størrelsen bedre. Man kunne dog også bare sætte
width og height til 100%.
Input feltet får dog fra deres side "top: 1px;", hvilket er fint i IE, men
ikke så pænt i andre browsere, så hvis det blev tilføjet i en conditional,
så ville det faktisk se rigtig pænt ud.
Men det sjove er så at hele siden reloader, når man vælger blandt de
forskellige købsmuligheder, så de kunne have lavet en smuk
serversideløsning i stedet, og undgået dette "problem".
--
Ryan Kristensen