Closed Bug 95487 Opened 23 years ago Closed 22 years ago

JavaScript-generated table never completes

Categories

(Core :: DOM: HTML Parser, defect, P3)

defect

Tracking

()

VERIFIED FIXED
mozilla0.9.8

People

(Reporter: osavill, Assigned: harishd)

References

()

Details

(Keywords: dataloss, Whiteboard: [fixed on the trunk & branch])

Attachments

(3 files)

While trying to shop at http://www.tesco.co.uk I tried to list my favourite
items. The following appears to be sent from the server to be rendered inside a
frame :

<HTML>
<HEAD>
</HEAD>
<body bgcolor=#ffffff topmargin="0" leftmargin="0" >

<script LANGUAGE='JavaScript1.1'>
p=top.frames['htmbar'];

p.clearItems();

p.SetSearch("");

p.StartGroup("","Cooking Ingredients");p.addItem(50203116,"Tesco Tomato Puree
142g",0.24,"£0.17",1,1,"","PUREE/PARMESAN/PIZZERIA",0,"",1,"100G",1,"",0);p.addItem(51338491,"Tesco
Chocolate Sponge Pudding 115g",0.44,"£0.38",1,1,"","HOT PUDDINGS &
DESSERTS",0,"",1,"100G",1,"",0);p.addItem(54352664,"Heinz Spotted Dick Sponge
Pudding 300g",0.96,"£0.32",1,1,"","HOT PUDDINGS &
DESSERTS",0,"",1,"100G",1,"",0);p.addItem(50043351,"Bisto Rich Gravy Granules
170g",0.63,"£0.37",1,1,"","GRAVY
BROWNING",0,"",1,"100G",2,"",0);p.addItem(50043685,"Oxo Beef Cubes
24`s",1.33,"£0.94",1,0,"","STOCK CUBES/MEAT
EXTRACT",0,"",1,"100G",1,"",0);p.StartGroup("","Breakfast");p.addItem(51565653,"Nestle
Cheerios 375g",1.48,"£0.40",1,0,"","CHILDRENS
CEREALS",0,"",1,"100G",1,"",1);p.addItem(50438178,"Kelloggs Bran Flakes
750g",1.64,"£0.22",1,0,"","HEALTHY
CEREALS",0,"",1,"100G",1,"",1);p.addItem(55433135,"Jordans Special Muesli
750g",2.49,"£0.33",1,0,"","MUESLI TYPE
CEREALS",0,"",1,"100G",1,"",1);p.StartGroup("","Bakery &
Cakes");p.addItem(50297044,"Tesco Medium Sliced White Loaf
800g",0.35,"£0.04",1,1,"","STANDARD WHITE
BREAD",0,"",1,"100G",1,"",0);p.addItem(51309566,"Hovis Granary Malted Brown
Medium Sliced Bread 800g",0.89,"£0.11",1,1,"","BROWN BREAD WITH
BITS",0,"",1,"100G",1,"",0);p.addItem(51329185,"Tesco Multigrain Wholemeal
Sliced Bread 800g",0.79,"£0.10",1,1,"","BROWN BREAD WITH
BITS",0,"",1,"100G",1,"",1);p.addItem(50572191,"Crusty White Farmhouse
400g",0.39,"£0.10",1,0,"","CRUSTY WHITE
BREADS",0,"",1,"100G",1,"",1);p.StartGroup("","Fruit &
Vegetables");p.addItem(50852666,"Braeburn Apples Class 1
Loose",1.39,"£0.63",6,1,"","OTHER APPLES",0,"",1,"LB",4,"",0);
p.addFood(50852666,0.188,0,0,0,1,0);p.addItem(50507235,"Limes
Each",0.19,"£0.19",1,1,"","LEMONS &
LIMES",0,"",1,"EACH",1,"",0);p.addItem(50501472,"Clementines Class 1
Loose",1.74,"£0.79",6,1,"","SATSUMAS/CLEMENTINES",0,"",1,"LB",1,"",0);

p.addFood(50501472,0.125,0,0,0,1,2);p.addItem(51681549,"Rocha Pears Class 1
Loose",1.08,"£0.49",6,1,"","OTHER PEARS",0,"",1,"LB",4,"",1);

p.addFood(51681549,0.148,0,0,0,1,3);p.addItem(50502131,"Prepack Plums Class
1",0.99,"£1.32",1,0,"","APRICOT/GREENGAGE/PLUMS",1,"",1,"KG",1,"",0);p.addItem(50507120,"Kiwi
Fruit Class 1 Each",0.19,"£0.19",1,0,"","KIWI
FRUIT",0,"",1,"EACH",3,"",0);p.addItem(50501869,"A Bag of White Seedless Grapes
Class 1 Loose (approx. 500g - 650g per
bag)",1.74,"£0.79",6,1,"","GRAPES",0,"",1,"LB",0,"",1);
p.addFood(50501869,0,0,0.65,0,2,6);p.addItem(53522183,"Tesco Eat Me Keep Me
Bananas
Pack",1.39,"£0.14",1,0,"","BANANAS",0,"",1,"EACH",1,"",1);p.addItem(51165199,"(pawpaw)
Large Papaya Each",1.39,"£1.39",1,0,"","OTHER EXOTIC
FRUIT",0,"",1,"EACH",1,"",0);p.addItem(50656207,"Tomatoes Loose Class
1",0.97,"£0.44",6,0,"","STANDARD TOMATOES",0,"",1,"LB",6,"",0);

p.addFood(50656207,0.06,0,0,0,1,9);p.addItem(50686436,"Cherry Tomatoes 250g Pack
P.M",0.88,"£2.94",1,1,"","CHERRY
TOMATOES",0,"",1,"KG",1,"",0);p.addItem(51622776,"Green Peppers Loose Class 1
Each",0.46,"£0.46",1,0,"","PEPPERS",0,"",1,"EACH",1,"",1);p.addItem(51658215,"Red
Peppers Loose Class 1
Each",0.46,"£0.46",1,0,"","PEPPERS",0,"",1,"EACH",1,"",1);p.addItem(51531549,"Tesco
Ready To Eat
Avocados",1.49,"£1.49",1,1,"","AVOCADOS",1,"",1,"EACH",1,"",0);p.addItem(50502459,"Celery
Each",0.34,"£0.34",1,1,"","CELERY",1,"",1,"EACH",1,"",0);p.addItem(50550228,"Cauliflower
Medium Each Class
2",0.49,"£0.49",1,0,"","CAULIFLOWERS",0,"",1,"EACH",1,"",0);p.addItem(51439976,"Broccoli
Loose",0.97,"£0.44",6,1,"","BROCCOLI",0,"",1,"LB",0,"",1);p.addItem(50502799,"Leeks
Loose Class 2",1.98,"£0.90",6,1,"","LEEKS",0,"",1,"LB",1,"",1);

p.addFood(50502799,0.25,0,0,0,1,17);p.addItem(50503147,"Closed Cup Mushrooms -
Loose",2.38,"£1.08",6,1,"","MUSHROOMS",0,"",1,"LB",0,"",1);p.addItem(50503314,"Parsnips
Loose Class 1",1.85,"£0.84",6,1,"","PARSNIPS",0,"",1,"LB",250,"",0);

p.addFood(50503314,0.2,0,0,0,1,19);p.addItem(50962213,"Carrots Loose Class
1",0.49,"£0.22",6,1,"","CARROTS",0,"",1,"LB",500,"",0);

p.addFood(50962213,0.1,0,0,0,1,20);p.addItem(50503429,"White Potatoes 5kg
Pack",1.72,"£0.34",1,1,"","POTATOES   
OLD",0,"",1,"KG",1,"",0);p.addItem(54681654,"T Leafy Salad With
Tatsoi",0.99,"£0.86",1,1,"","READY WASHED
SALADS",0,"",1,"100G",2,"",0);p.addItem(50220769,"Tesco Coleslaw
250g",0.44,"£0.18",1,1,"","COLESLAW, DRESSED
SALADS",0,"",1,"100G",1,"",1);p.addItem(50855559,"Tesco Potato Salad
250g",0.48,"£0.19",1,1,"","COLESLAW, DRESSED
SALADS",0,"",1,"100G",1,"",1);p.StartGroup("","Meat, Fish &
Poultry");p.addItem(52251648,"Beef Healthy Eating Steak  Mince
500g",2.49,"£4.98",1,1,"","FRESH BEEF
MINCE",1,"",1,"KG",2,"",0);p.addItem(51330977,"Beef Lean Braising Steak Medium
300g - 500g",5.89,"£2.67",3,0,"","BEEF CASSEROLE & STEWING",0,"",1,"LB",1,"",0);
p.addFood(51330977,0,0.3,0.5,0.05,3,1);p.addItem(51335943,"Pork Chops x4  600g -
1000g",3.75,"£1.70",3,1,"","FRESH PORK STEAKS/CHOPS",1,"",1,"LB",1,"",1);

p.addFood(51335943,0,0.6,1,0.1,3,2);p.addItem(51329663,"Lamb 4 Loin
Chops",11.59,"£5.26",3,0,"","FRESH LAMB CHOPS/STEAKS",0,"",1,"LB",1,"",1);

p.addFood(51329663,0,0.4,0.64,0.1,3,3);p.addItem(51571392,"Fresh Sliced Lambs
Liver Small 200g - 285g",1.8,"£0.82",3,0,"","FRESH
OFFAL",0,"",1,"LB",1,"",0);p.addItem(54216930,"Finest Free Range Whole Chicken
1.1-2.0kg",3.85,"£1.75",3,1,"","FRESH FREE RANGE CHICKEN",0,"",1,"LB",1,"",0);
p.addFood(54216930,0,1.1,2,0.2,3,5);p.addItem(52983588,"Fresh Diced Chicken
Breast 400g",3.29,"£8.23",1,0,"","CHICKEN DICED & STIR
FRY",0,"",1,"KG",2,"",1);p.addItem(52631084,"Tesco Roast Part Boned Breast
200g",1.63,"£8.15",1,1,"","COOKED
CHICKEN",0,"",1,"KG",1,"",1);p.addItem(52631176,"Tesco 2 Pack Roast Chicken
Boneless Breast Fillets 225g",3.28,"£1.46",1,0,"","COOKED
CHICKEN",0,"",1,"100G",1,"",0);p.addItem(51666188,"Tesco Unsmoked 8 Extra
Trimmed Rindless Back 250g",1.79,"£7.16",1,1,"","BACON
RASHERS",1,"",1,"KG",1,"",0);p.addItem(52540519,"Tesco Finest Maple Cure
Rindless Back Bacon 225g",2.49,"£9.77",1,1,"","BACON
RASHERS",0,"",1,"KG",1,"",0);p.addItem(53606539,"Tesco Pork Lunch Tongue
125g",1.49,"£1.20",1,1,"","PREM /FINEST COOKED
MEAT",0,"",1,"100G",1,"",0);p.addItem(52860181,"Matthews Golden Roasted Chicken
Breast 150g",1.84,"£1.23",1,1,"","STANDARD COOKED
MEAT",0,"",0,"100G",1,"",0);p.StartGroup("","Tins,Packets and
Jars");p.addItem(54270196,"Tesco Value Chopped Tomatoes
400g",0.15,"£0.04",1,1,"","TOMATOES",0,"",1,"100G",1,"",0);p.addItem(54478550,"Tesco
Italian Chopped Tomatoes
227g",0.24,"£0.11",1,1,"","TOMATOES",0,"",1,"100G",1,"",0);p.addItem(55205210,"Organic
Heinz Baked Beans 415g",0.49,"£0.12",1,0,"","ORGANIC BAKED
BEANS",0,"",1,"100G",1,"",0);p.addItem(50683704,"Tesco Indian Basmati Rice
1kg",2.25,"£0.23",1,1,"","COOKING
RICE",0,"",1,"100G",1,"",0);p.addItem(50360165,"Amoy Sliced Bamboo Shoots
225g",0.75,"£0.33",1,0,"","CHINESE/INDIAN
ACMPMNT",0,"",1,"100G",2,"",0);p.addItem(50362065,"Amoy Whole Water Chestnuts
220g",0.65,"£0.00",1,0,"","CHINESE/INDIAN
ACMPMNT",0,"",1,"",1,"",0);p.addItem(52017748,"Blue Dragon Fish Sauce
190ml",0.79,"£0.42",1,1,"","CHINESE/INDIAN
ACMPMNT",0,"",1,"100ML",1,"",0);p.addItem(52956598,"Blue Dragon Crispy Seaweed
55g",1.69,"£0.31",1,1,"","CHINESE/INDIAN
ACMPMNT",0,"",1,"10G",1,"",0);p.addItem(54225078,"Blue Dragon Coconut Milk
400ml",0.85,"£0.21",1,1,"","CHINESE/INDIAN
ACMPMNT",0,"",1,"100ML",1,"",0);p.addItem(53844994,"Tesco Red Split Lentils
500g",0.75,"£0.15",1,1,"","PULSE
CEREALS",0,"",1,"100G",1,"",0);p.addItem(50869952,"Tesco Fusilli Pasta Twists
1kg",0.56,"£0.06",1,1,"","DRY
PASTA",0,"",1,"100G",1,"",0);p.addItem(50454020,"Hellmanns Light Mayonnaise
200g",0.84,"£0.42",1,0,"","MAYONNAISE",0,"",1,"100G",1,"",0);p.addItem(54423771,"More
Than A Dressing Lime & Coriander 350ml",1.78,"£0.51",1,1,"","SALAD
DRESSINGS",0,"",1,"100ML",1,"",0);p.addItem(51466125,"Tesco Hot & Spicy Pickled
Onions In Vinegar 440g",1.32,"£0.59",1,1,"","PICKLED
ONIONS",0,"",1,"100G",1,"",0);p.StartGroup("","Frozen
Foods");p.addItem(50142101,"Birds Eye Garden Peas
907g",1.25,"£0.63",1,1,"","FROZEN
PEAS",0,"",1,"LB",1,"",1);p.addItem(54957686,"Tesco Organic Sweetcorn
907g",1.29,"£0.65",1,1,"","FROZEN
SWEETCORN",0,"",1,"LB",1,"",0);p.addItem(54584873,"Tesco 15 Mini Donuts Price
Marked 99p",0.99,"£0.07",1,1,"","FZN
ECLAIRS/SNACK/DANISH",0,"",0,"EACH",1,"",0);p.addItem(53283551,"Ben & Jerrys
Choc Fudge Brownie Ice Cream 500ml",3.79,"£0.76",1,1,"","ICE CREAM
(LUXURY)",1,"",0,"100ML",1,"",0);p.StartGroup("","Household");p.addItem(52627101,"Fairy
A/Matic Non Bio Powder 2.43kg Bag",4.19,"£0.17",1,1,"","WASHING
POWDERS",0,"",1,"100G",1,"",1);p.addItem(55204303,"Fairy Non Biological Powder
3.645kg",5.84,"£0.16",1,1,"","WASHING
POWDERS",0,"",1,"100G",1,"",0);p.addItem(50769696,"Kleenex For Men Mansize
Tissues 100 2ply Twinpk",2.91,"£1.46",1,1,"","FACIAL
TISSUES",0,"",1,"100SHEET",1,"",1);p.StartGroup("","Dairy, Eggs &
Milk");p.addItem(50668556,"Tesco Pasteurised Skimmed Milk 2.272ltr/4
Pints",0.93,"£0.41",1,1,"","FRESH
MILK",0,"",1,"LITRE",1,"",0);p.addItem(54169392,"Tesco Pasteurised Semi-Skimmed
Milk 1.136lt/2pt",0.54,"£0.48",1,1,"","FRESH
MILK",0,"",1,"LITRE",1,"",1);p.addItem(51325195,"Full Cream Whole Organic Milk
568ml",0.41,"£0.72",1,1,"","ORGANIC
MILK",0,"",1,"LITRE",2,"",1);p.addItem(54615141,"Tesco Organic Semi Skimmed Milk
4 Pint 2.272 Ltr",1.29,"£0.57",1,1,"","ORGANIC
MILK",0,"",0,"LITRE",1,"",0);p.addItem(51512209,"Olivio Reduced Fat Spread
500g",1.08,"£2.16",1,1,"","OLIVE
SPREADS",0,"",1,"KG",1,"",0);p.addItem(54148964,"Tesco Farmhouse Mature Cheddar
Small",6.76,"£3.07",3,1,"","PRE-PACK CHEDDAR-MATURE",0,"",1,"LB",1,"",1);
p.addFood(54148964,0,0,0.26,0,2,5);p.addItem(51377242,"Tesco Fresh Grated
Parmesan Cheese 50g",0.79,"£15.80",1,1,"","CONTINENTAL
CHEESE",0,"",1,"KG",1,"",0);p.addItem(51432557,"Boursin Light
125g",1.39,"£11.12",1,1,"","CONTINENTAL
CHEESE",0,"",1,"KG",1,"",0);p.addItem(52703155,"Tesco Value Singles
170g",0.44,"£2.59",1,1,"","PROCESSED
CHEESE",0,"",1,"KG",1,"",0);p.addItem(50996829,"Muller Fruit Corner Yoghurt With
Blueberries 175g",0.38,"£0.22",1,1,"","LUXURY
YOGURT",1,"",1,"100G",2,"",0);p.addItem(52860590,"Onken Florida Orange Summer
Yogurt 500g",0.89,"£0.18",1,1,"","LUXURY
YOGURT",0,"",0,"100G",1,"",0);p.addItem(54891117,"Saint Ivel Tweenies Wholemilk
Yogurt 4 Pack 360g",1.13,"£0.31",1,1,"","CHILDRENS
YOGURT",0,"",1,"100G",1,"",0);p.addItem(54628765,"Tesco Low Fat Toffee Yogurt 4
Pack 500g",0.85,"£0.17",1,1,"","LOW FAT
YOGURT",1,"",1,"100G",1,"",0);p.addItem(51515016,"Tesco Healthy Eating Bio
Yogurt 12 Pack 1500g",2.55,"£0.17",1,1,"","LIGHT/DIET
YOGHURT",0,"",1,"100G",1,"",1);p.addItem(53055706,"Tesco Healthy Eating Morello
Cherry & Apricot Yogurt 4 Pack 500g",0.89,"£0.18",1,1,"","LIGHT/DIET
YOGHURT",0,"",1,"100G",1,"",0);p.addItem(54045360,"Organic Yeo Valley Childs
Fruit Yoghurt 4 Pack",1.19,"£0.30",1,0,"","ORG YOGURTS &
DESSERTS",0,"",1,"100G",2,"",1);p.addItem(54319273,"Harmonie Organic Fromage
Frais For Kids 300g",1.29,"£0.43",1,1,"","ORG YOGURTS &
DESSERTS",0,"",1,"100G",1,"",0);p.addItem(52260948,"Tesco Free Range Eggs Large
Box Of
6",0.99,"£0.17",1,1,"","EGGS",0,"",1,"EACH",1,"",0);p.StartGroup("","Toiletries");p.addItem(54213697,"Oral
B Toothbrush Advantage Soft C.Compact
35",1.97,"£1.97",1,0,"","TOOTHBRUSHES",0,"",1,"EACH",1,"",0);p.addItem(52635707,"Dove
Soap Extra Sensitive 2x100g",0.89,"£0.45",1,1,"","BAR
SOAPS",0,"",1,"100G",1,"",1);p.addItem(51786420,"Organics Shampoo Normal
200ml",1.47,"£0.74",1,1,"","SHAMPOO",0,"",1,"100ML",1,"",1);p.StartGroup("","Newspapers
& Magazines");p.addItem(51598182,"Personal Computer
World",4.99,"£0.00",1,0,"","COMPUTING",0,"",1,"",1,"",0);p.addItem(52176812,"Computer
Shopper
C.D.",2.99,"£0.00",1,0,"","COMPUTING",0,"",1,"",1,"",0);p.StartGroup("","Soft
Drinks");p.addItem(54007135,"Tesco Organic Apple Juice 1
Litre",1.49,"£1.49",1,1,"","CHILLED ORG JCE &
DRINKS",0,"",1,"LITRE",1,"",1);p.addItem(50075249,"Lucozade Original Bottle
345ml",0.52,"£1.51",1,1,"","SPORTS/ENERGY
DRINKS",0,"",1,"LITRE",1,"",0);p.addItem(50378369,"Tesco Pure Orange Juice
Smooth 4x1 Litre",2.36,"£0.59",1,1,"","L/LIFE PURE ORANGE
JUICE",0,"",1,"LITRE",1,"",1);p.addItem(53919532,"Libbys Organic Tomato Juice 1
Litre",0.95,"£0.95",1,1,"","L/L ORG JCE & JCE
DRINKS",0,"",0,"LITRE",1,"",0);p.StartGroup("","Pet
Care");p.addItem(50556049,"Felix Chunks In Jelly Beef 400g
Can",0.47,"£0.12",1,1,"","PREMIUM CAN CAT
FOOD",0,"",1,"100G",2,"",1);p.addItem(50556055,"Felix Chunks In Jelly Rabbit
400g Can",0.47,"£0.12",1,0,"","PREMIUM CAN CAT
FOOD",0,"",1,"100G",2,"",1);p.addItem(50960549,"Felix Chunks In Jelly Duck &
Heart 400g",0.47,"£0.12",1,1,"","PREMIUM CAN CAT
FOOD",0,"",1,"100G",2,"",1);p.addItem(51441166,"Felix Chunks In Jelly Lamb &
Turkey 400g",0.47,"£0.12",1,1,"","PREMIUM CAN CAT
FOOD",0,"",1,"100G",2,"",1);p.addItem(51441172,"Felix Chunks In Jelly Duck &
Rabbit 400g",0.47,"£0.12",1,0,"","PREMIUM CAN CAT
FOOD",0,"",1,"100G",2,"",1);p.addItem(51573551,"Felix Chunks In Jelly Turkey
400g Can",0.47,"£0.12",1,1,"","PREMIUM CAN CAT
FOOD",0,"",1,"100G",2,"",1);p.addItem(51904005,"Felix Chunks In Gravy Chicken &
Kidney 400g",0.47,"£0.12",1,1,"","PREMIUM CAN CAT
FOOD",0,"",1,"100G",1,"",0);p.addItem(52573722,"Whiskas In Gravy Rabbit & Game
400g",0.47,"£0.12",1,0,"","PREMIUM CAN CAT
FOOD",0,"",1,"100G",2,"",1);p.StartGroup("","Ready
Meals");p.addItem(50991593,"Tesco 6 Mini Melton Mowbray Pork Pies
294g",1.15,"£0.39",1,1,"","COLD
PIES",0,"",1,"100G",1,"",0);p.addItem(51835887,"Tesco Deep Pan Meat Feast Pizza
530g",2.99,"£0.56",1,1,"","PIZZAS",0,"",1,"100G",1,"",0);p.addItem(54426981,"Tesco
Thin & Crispy Cheese & Onion Pizza
314g",1.99,"£0.63",1,1,"","PIZZAS",0,"",0,"100G",1,"",0);p.addItem(52424583,"Tesco
Scotch Egg 113g",0.35,"£0.31",1,1,"","SCOTCH & SAVOURY
EGGS",0,"",1,"100G",1,"",0);p.addItem(54348854,"Tesco Tandoori Chicken Sizzler
350g",3.49,"£1.00",1,1,"","INDIAN
MEALS",0,"",1,"100G",1,"",0);p.addItem(52607816,"Ncg Wild Mushroom Soup
568g",1.75,"£0.31",1,1,"","FRESH
SOUP",0,"",1,"100G",1,"",0);p.StartGroup("","Baby");p.addItem(50085796,"Milton
Napisan 500g Pack",1.75,"£0.00",1,0,"","BABY FEEDING
ACCESSORIES",0,"",1,"",1,"",1);p.addAd(" <!--click here--><a
href=\"/superstore/finest\"><img src=\"/superstore/ads/banners/ad088.gif\"
border=0 width=140 height=90 alt=\"click here\"></a>	");p.addAd(" <!--click here--><a
href=\"/superstore/feature/bbqdemo.htm\"><img
src=\"/superstore/ads/banners/ad079.gif\" border=0 width=140 height=90 alt=\"click
here\"></a>	");p.addAd(" <!--click here--><a href=\"/superstore/whatsnew.htm\"><img
src=\"/superstore/ads/banners/ad019.gif\" border=0 width=140 height=90 alt=\"click
here\"></a>	");p.addAd(" <!--click here--><a href=\"/superstore/wineoftheweek.htm\"><img
src=\"/superstore/ads/banners/ad010.gif\" border=0 width=140 height=90 alt=\"click
here\"></a>	");
p.drawItems(1);
</script>


<script language="JavaScript1.1">
top.frames.topleft.ReturnFromSearch();

</script>

</body>
</HTML>

Mozilla never renders this list in full. Typically it gets about as far as "Blue
Dragon Crispy Seaweed" and then gives up. Usually the last row isn't rendered in
its entirety either.
Reporter: are you sure this is the complete HTML of the page?  The Javascript
seems to call various functions that aren't defined here, and I don't think this
can really be debugged without seeing them...

Moving component to DOM Level 0 (more appropriate).
By the way, you can attach html files to the bug instead of dumping their 
content as comments by clicking "Create a new attachment".
101355.471@compuserve.com: 

Can you give an exact sequence of steps to follow? I am unclear how
to reproduce this bug for myself. Do we need a userID and password? 

Also - do you see any errors in (Tasks | Tools | JavaScript Console)?
Be sure to open this before using the site, and clear out any 
residual bugs from other sites. Thanks -
Adding qawanted keyword.

Can anyone get the URL for top.frames['htmbar'] mentioned above?
(p=top.frames['htmbar'];)

Can anyone get the URL or in-line script containing the functions?
(p.clearItems(); p.SetSearch(""); etc. etc.)

Keywords: qawanted
Summary: Java script generated list never completes → JavaScript-generated list never completes
> 101355.471@compuserve.com: 

> Can you give an exact sequence of steps to follow? I am unclear how
> to reproduce this bug for myself. Do we need a userID and password? 

Without a way to reproduce this bug, I will have to close it - thanks.
101355.471@compuserve.com reports these steps to reproduce:

1. Enter http://www.tesco.com
2. Click on "register & sign in" tab
3. Enter a valid UserID and Password
4. Click on "sign-in"
5. Click on the "shopping" tab
6. Click on the "groceries from your local Tesco" link at the top of the frame
7. Click on the "My Favourites" link in the left hand frame
8. Click on the "Show all favourites" link in the left hand frame


The following error is shown in the JavaScript console :

   Error: SplitString is not defined
   Source File: http://www.tesco.com/superstore/FavouriteList.asp
   Line: 133


101355.471@compuserve.com notes:
However, this does not stop the first half of the list being rendered.
Confirming bug with Mozilla build 2001082208 WinNT.
OS : Linux --> All. 

I will attach a screenshot showing how the dynamic table-rendering
simply stops dead in its tracks. There is no problem in NN4.x, IE4.x.

The error noted above in the JavaScript Console,

   Error: SplitString is not defined
   Source File: http://www.tesco.com/superstore/FavouriteList.asp
   Line: 133

seems to be irrelevant, as it occurs in NN4.x as well, yet the dynamic table 
always renders completely in NN4.x. Component : JS Engine ---> DOM Level 0. 
Assignee: rogerl → jst
Status: UNCONFIRMED → NEW
Component: Javascript Engine → DOM Level 0
Ever confirmed: true
OS: Linux → All
QA Contact: pschwartau → desale
Hardware: PC → All
Look at the lower-right corner of the screenshot. You can see the
scrollbar pulled all the way down. But the HTML table quit rendering 
in the "Pet Care" section, on a row called "...Lamb and Turkey".
The JavaScript for this row is given in the bug report above. 

IMPORTANT: you never know where this table will quit rendering; 
it is NOT always on this row. For example, the reporter states: 

> Mozilla never renders this list in full. Typically it gets about
> as far as "BlueDragon Crispy Seaweed" and then gives up. Usually
> the last row isn't rendered in its entirety either.
The HTML pasted above comes from the "Show all my favourites" link: 
http://www.tesco.com/superstore/prodselector.asp?Type=Department&Search=All

This does not resolve unless one has followed all the steps-to-reproduce
given above. Of course, it relies on a proprietary query of the customer's 
shopping habits, linked to the UserID and password one used to log in. 

The query seems to pull back the proper abstract data in all three 
browsers: NN4.x, IE4.x, and Mozilla. It's just the document.write of 
the HTML table that stops mysteriously in Mozilla.


Similar issues are raised in:
bug 82521 
"Javascript menu doesn't load up properly."
bug 96324 
"After patch for bug 93363, sometimes these pages don't finish downloading"
bug 93363
"<td nowrap><table><tr><td>lots of text": text doesn't wrap"

cc'ing alexsavulov@netscape.com for his experience on these. 
Wondering if this bug might be caused by a similar problem.
Summary: JavaScript-generated list never completes → JavaScript-generated table never completes
> The query seems to pull back the proper abstract data in all three 
> browsers: NN4.x, IE4.x, and Mozilla.

Why do I claim this? Because at the top of the rendered frame, you see
this in all three browsers: "favourites: The aisle has 113 favourite(s).", 
indicating the number of rows pulled back by the query.

This comes from the following line of HTML, where iC is a global
JavaScript counter variable: 

strCopyTitle='favourites:</font><font class=\"smalltext\">&nbsp;
              The aisle has '+  iC  +' favourite(s).</font>';
The p=top.frames['htmbar'] given above turns out to be this URL: 
http://www.tesco.com/superstore/midhtm.htm

This contains the JavaScript functions referenced in the HTML above: 

                   p.clearItems();
                   p.SetSearch("");
                   p.StartGroup("","Cooking Ingredients");
                   p.addItem( etc.)


I will attach an HTML testcase below containing the HTML pasted above
from the "Show all my favourites" link: 
http://www.tesco.com/superstore/prodselector.asp?Type=Department&Search=All

plus the JavaScript functions from http://www.tesco.com/superstore/midhtm.htm
placed in-line. This will render the HTML table we have been discussing,
although NOT inside a frame; but rather in a standalone page.

Therefore I have had to comment out anything in the JavaScript referring
to sibling frames, e.g. lines like 

            var p = parent.frames["main"].document 

got replaced with

            var p = document

All the changes I made to the HTML and JavaScript are indicated
by dual comment lines "BEGIN DEBUGGING" and "END DEBUGGING".
As a standalone, with the bits I've commented out, the HTML table
renders completely in Mozilla, as it does in NN4.x and IE4.x !

So this will require further debugging to see what's going wrong in 
the original, frame-based setting. Perhaps a timing issue is involved,
since the table stops rendering in unpredictable places.

On the other hand, perhaps it's precisely what I've commented out
that might be causing the bug.
Again, to see what I commented out or replaced, search for the
strings "BEGIN DEBUGGING" in the source for the attachment...
does anyone have a valid UID / PASS to login on tesco.com?

I want to debug this if possible.
Alexandru: any luck with this? 
Unfortunately the page has changed and I do not have steps to reproduce.
Is may fault that I didn't tried to reproduce before, but I had more urgent
stuff to do.

However, I know that the bug is arround (and hard to reproduce).
I'm trying to find a reliable way to reproduce (not depending on real world sites).
This bug does not appear in Mozilla builds up to todays (31/Oct/2001) for Window$ nor in Netscape 6.2 for Window$. I haven't tried any other platforms.
WORKSFORME.
Status: NEW → RESOLVED
Closed: 23 years ago
Resolution: --- → WORKSFORME
It may "WORKSFORME", and if it's on the Windows platform that's not a surprise,
but it definitely DOESN'TWORKFORME, so I'm re-opening this.

JavaScript is one of the weakest parts of all Linux browsers. Try this one, I
can still point people where the page is, or try www.insight.com and try to
"Choose a country" using the JavaScript button at the top of page, or ....
Status: RESOLVED → REOPENED
Resolution: WORKSFORME → ---
101355.471@compuserve.com is correct: I still see the bug, using
Mozilla trunk binaries 20011213xx on WinNT, Linux, and Mac9.1.

STEPS TO REPRODUCE : as in Comment #6 above.
On all three platforms, using the contributor's private id,
Mozilla shows the same caption at the top that NN4.7 shows: 

          favourites: The aisle has 115 favourite(s).

However, in NN4.7 we see a table of these 115 items, whereas in 
Mozilla we only get thirty or so (and no scrollbar). On my Linux box,
rendering actually quit in the middle of a row -
The key function call is HandleClick('all'). This function is
from http://www.tesco.com/superstore/leftbar/favouritesTop.htm : 

function HandleClick(option)
{
  var p=top.frames['htmbar'];
  var QStr = '';
  
  switch (option)
  {
   case 'filter':
     QStr = '/superstore/prodselector.asp?Type=Department&Search=All&Filter=3';
     break;
   case 'all':
     QStr = '/superstore/prodselector.asp?Type=Department&Search=All';
  }
  p.FavRenderWindowOpen('load',QStr);
}


which calls this function from http://www.tesco.com/superstore/midhtm.htm.
The first part of FavRenderWindowOpen() just brings up a new window
that is a "splash screen", asking the user to wait. The main line for us
seems to be the last one, that sets top.frames['midbar'].location : 


function FavRenderWindowOpen(MsgType,QStr) 
{
   var SourceURL='';

   switch (MsgType)
   {
     case 'load':
       SourceURL = '/superstore/FavRetrieving.htm';
       break;
     case 'sort':
       SourceURL = '/superstore/FavSorting.htm';
   }  

   RenderWindow = window.open(SourceURL,"Render_Window","height=150,width=375");

   if(typeof(RenderWindow)!='undefined'){
      RenderWindow.window.moveTo( 200, 200 );
      RenderWindow.focus();
   }

   if (typeof(QStr) != 'undefined'){top.frames['midbar'].location=QStr;}
}
jst, I will help you to look at this in the JS debugger with the 
contributor's id. Without a real-life id, the favourites list is empty - 
I am happy to re-supply the user name and password - just not publish it on a public list !!!
101355.471@compuserve.com: thank you again - I've still got it,
and am keeping it confidential. Hope we can get this one soon.
With Phil's help I was able to see that the table that doesn't load correctly is
document.write()'n in one single 250k long string, and for some reason, timer,
something else, the parser stops processing the 250k string before it's done. We
also verified in the DOM inspector in a release build that the content model is
indeed not completely built in this case, and that the content model does look
right, the part of it that we did get from the parser. And document.write()
never fails, so it seems like it's a parser bug. It's weird though, the testcase
that's attached to this bug writes out the same 250k string, and that always
works, but the real page doesn't.

Harish, Phil has an account that he can use on this site that shows this
problem, he'll come down and show you how to reproduce it, set a breakpoint in
nsHTMLDocument::WriteCommon() and you'll see that we're getting a 250k string,
that's the document.write() call that "fails". I'm afraid I don't have much more
info here, but something, most likely timer related, goes wrong, since the table
is cut off at more or less random places...

The page does use tons of non-HTML tags, like RT:TP, and similar tags, but it
seems like the parser sometimes stops nowhere close to those tags so I'm not
sure if that's related or not.

Over to HTMLParser. Let me know if you need more info.
Assignee: jst → harishd
Status: REOPENED → NEW
Component: DOM Level 0 → Parser
QA Contact: desale → moied
FYI: I don't see the problem when I disable interrupt-parsing. Kevin?
Status: NEW → ASSIGNED
Priority: -- → P3
Target Milestone: --- → mozilla0.9.8
Harish and I determined that the problem is caused by the interruptible parsing
logic. The parser should never be interrupted when processing a document.write.
The current logic assumes it can look at the mPrevContext on the parser to tell
if it is in a document.write but this is not sufficient. The nsParser::Parse
method needs to be modified to pass a flag to ResumeParse to indicate that
parsing can not be interrupted.(Note: nsParser::Parse is called when a
document.write has occurred) In nsParser::ResumeParse it needs to use the flag
avoid calling SetCanInterrupt(PR_TRUE) when called from nsParser::Parse.

added edt0.9.4, dataloss keywords.

EDT: I nominated this bug fix for the branch because the fix for this problem is
very simple and safe and the bug can result in a large amount of missing content
when document.write's are used.
Severity: normal → major
Keywords: dataloss, edt0.9.4
Will plus for 094 once fix is checked into trunk and tested.
what's the status of the fix for this (on the trunk first)? Is this fixed on the
trunk?
Not as of todays (2 Jan) "Latest" binary build. I only got 4 items when I tried this afternoon !
Whiteboard: [fix in hand]
Comment on attachment 63296 [details] [diff] [review]
patch v1.0 [ document.writes shouldn't be interrupted ]

sr=jst, but it would be *really* interesting to know exactly why the
interruption of parsing document.write()'n data causes data loss. This fix
probabaly doesn't fix the case where we document.write() a huge string that
starts out with loading an external file (css or JS), that will cause the
parser to be blocked (and thus makes document.write() asynchronous in this
case) and once the external file is loaded we'll continue parsing the data that
came in through document.write(). In that case we *will* interrupt the parsing
of that data, even if it did originally come in through document.write(), even
with this patch, and in that case it's fine to interrupt the parsing as long as
we don't loose any data in doing so.

I'm fine with checking this patch in though to fix the data loss problem that
has shown up so far, but either file a new bug on the other problem, or leave
this open after the fix is checked in.
Attachment #63296 - Flags: superreview+
jst: You're right. We need a good understanding on when to interrupt and when
not to. However, without a good reduced test case it's extremely hard to
comprehend the problem.

Moied: Would it be possible to derive a reduced test case? ). 

Kevin: Do you know the real reason why we shouldn't interrupt when
document.writing? Also, could you please r= the patch?

Anyway, we should take this change for now and open up a new bug to understand
the interrupt mechanism throughly.
Comment on attachment 63296 [details] [diff] [review]
patch v1.0 [ document.writes shouldn't be interrupted ]

r=kmcclusk@netscape.com
Attachment #63296 - Flags: review+
Whiteboard: [fix in hand] → [fixed on the trunk]
Keywords: edt0.9.4edt0.9.4+
Landed on the branch.
Whiteboard: [fixed on the trunk] → [fixed on the trunk & branch]
Moied, Please test and verify the changes.
Keywords: fixed0.9.4
My recollection is:

The interruption code is not setup to handle the interrupting of the
document.write because it was believed that if we were to interrupt during a
document.write that might change the result for scripts that did a
document.write followed by a DOM call which expected the result of the
document.write to have affected the DOM tree.

Code was put in to check for sub-parser contexts which was suppose to indicate
that a document.write had occurred and prevent the interruption of the parser.
There wasn't any effort to schedule a resume parse PL_event in this case because
it should never occur.

Since this check was faulty; if the parser was interrupted in a sub-parser
context all of the remaining content in the document.write might be lost if the
document completed loading and a resume parse event was not scheduled to
continue the parsing.  The resume parse event would not be scheduled for
interruption of the document.write initiated parsing because it was assumed that
this would never occur.

The only condition that can result in data loss as the result of this
interruption code is if the necko has sent the final chunk of data to the
parser,  the parser is interrupted part way through parsing this data and a
resume parse PL_event is not scheduled. Also note that the parser can only be
interrupted when parsing HTML documents because the NavDTD is the only DTD that
actually will pass back the interrupt flag.

I think the case that jst is outlined should not be issue. If we interrupt the
parser and it's not in a sub-parser context and there is more data to parse then
a resume parse PL_event will be scheduled and there will not be any data loss.
In addition, blocking the parser is not equivalent to interrupting as referenced
in this bug. Interrupting the parser is the result of the NavDTD passing back a
specific flag to the parser to indicate that too much time has been spent
parsing, while blocking is a separate flag. Only the interrupt flag will result
in the potential need to schedule a resume parse event. The flag to indicate
blocking will not. 

We should test this however. 

(Caveat: My comments are based on my memory of the issues from 7 months ago)
> I think the case that jst is outlined should not be issue. If we interrupt
> the parser and it's not in a sub-parser context and there is more data to
> parse then a resume parse PL_event will be scheduled and there will not be
> any data loss.

The second sentence of that is AFAICT what this bug is all about. The testcase
does a document.open() and then a document.write(<huge string>), there will not
be a sub-parser context in this case (since this is not an inline
document.write()), the parser is interrupted, and there is indeed more data to
parse. I don't know if the parse PL_event is scheduled or not, but we do indeed
loose data in this case, even if there is more data to be parsed when the parser
is interrupted.

Seems like this data loss problem is not yet fully understood, too bad it's so
hard to reproduce.
Fallowed the instructions in comment #6 with a valid UserID and Password, found 
the page rendered completely with user having 114 favourite(s)items selected.  
The whole list is seen till last category/Item, which is "Baby" in this list. 
Tested with Build ID 20020109(trunk) on Win2k and verified patch checked in CVS 
(Rev 3.290)
Just to continue on my comment. I do think that this problem is still not fully
understood, but the patch in this bug does fix this bug, and IMO it's worth
taking on the branch. It's a very lowrisk fix that fixes *most*, if not all, of
these problems.
Tested with build ID 20020110(trunk) on Linux, Mac OS X, Win2k and win XP 
(home), table-rendered without any problem. 
Marking FIXED.
Status: ASSIGNED → RESOLVED
Closed: 23 years ago23 years ago
Resolution: --- → FIXED
From Johnny's Comment #34 above:

> I'm fine with checking this patch in though to fix the data loss problem
> that has shown up so far, but either file a new bug on the other problem,
> or leave this open after the fix is checked in.


Should we leave this bug open until the final solution is found? 
Or open a new bug?
Phil: Please open up a new bug. However, I don't think that bug would get fixed
any time soon.
I have opened bug 119533 on the larger issue, and cc'ed everyone
involved in this bug. Please modify bug 119533 in case I stated
anything incorrectly.
101355.471@compuserve.com: does the site work properly for you with recent 
builds? If so, you can mark this bug "Verified"; if not, you can reopen it - 
Yes, this seems top work just fine here. I notice that the new bug report generated from this one already has a "don't hold your breath" type message against it !!!
Status: RESOLVED → VERIFIED
It's back ! Tried nightly build as of 25 June 2002.

Now the list never even starts to render !

The "Loading list, please wait..." dialog never goes away.

Status: VERIFIED → REOPENED
Resolution: FIXED → ---
Well, not exactly the same bug...I belive. Now, I get the pop-up "Retrieving
product information. Please wait..", when I click on "Show all favourites", that
never quits and a javascript 
[ errorError: daAddBasketBut is not defined
  Source File: https://secure.tesco.com/superstore/ActionMenu/ActionMenu.htm
  Line: 25
].
101355.471@compuserve.com: thank you again!

Harish is right; this is a new problem that has a completely 
different cause. So allow me to re-close this report.I have
filed bug 154508 on the new problem and cc'ed you on it.

The story is a little different this time, however. The site
is now using proprietary features that are only recognized in
Netscape 4.7 or IE. Details are at bug 154508. This is assigned
to the Evangelism component, which will try to contact the site
and get them to write W3C-standard HTML and JavaScript -
Status: REOPENED → RESOLVED
Closed: 23 years ago22 years ago
Resolution: --- → FIXED
Verified -
Status: RESOLVED → VERIFIED
*** Bug 110618 has been marked as a duplicate of this bug. ***
Keywords: qawanted
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: