
Moj problem dotyczy tylko i wylacznie przegladarki firefox w wersji 2.x.x.x.
Pod 3.0, jak i pod IE/Opera/Chrome moj skrypt dziala bez zarzutu.
Wyglada to tak.
W pliku htmlowym mam link:
<a href="#" title="Przenieś zaznaczone wiadomości do wskazanego folderu" onclick="moveMessages(); return false;" target="_self">
Ww. funkcja wyglada tak:
function moveMessages() { var toFolder; toFolder = crossModalDialog ('toolbar.php?showFolders=1&move=1', 300, 400); if (toFolder) { copyOrMoveMessages(true, toFolder); } }
funkcja crossModalDialog:
function crossModalDialog(url, width, height) { var top; var left; top = (screen.availHeight - height) / 2; left = (screen.availWidth - width) / 2; if (top < 0) top = 0; if (left < 0) left = 0; if (window.showModalDialog) { return window.showModalDialog(url, window.self, 'dialogHeight: '+height+'px; dialogWidth: '+width+'px; help: no; resizable: yes; scroll: yes; status: no;'); } else { if (dialogWindow && !dialogWindow.closed && dialogWindow.close) { dialogWindow.close(); } dialogWindow = window.open(url, '_blank', 'toolbar=no,menubar=no,directories=no,resizable=yes,width='+width+',height='+height+',top='+top+',left='+left+',scrollbars=yes,status=no'); return null; } }
W tym momencie mamy okienko z lista folderow.
Sa tam linki do skryptu ze zdarzeniami onClick, np. "onclick="copyOrMoveMessages(true, 'INBOX.Drafts');"
Wybieram ten link i mamy:
copyOrMoveMessages:
function copyOrMoveMessages(isMove, toFolder) { if (window.dialogArguments) { window.returnValue = toFolder; return; } if (isMove) { moveMessagesTo(toFolder); } }
moveMessagesTo:
function moveMessagesTo(toFolder) { return selectedMessagesAction('move', false, toFolder); }
selectedMessagesAction:
function selectedMessagesAction(action, confirmText, toFolder) { if (!countSelectedMessages()) { alert(getParameter('selectMessages')); return false; } if (!confirmText || confirm(confirmText)) { document.forms['messages'].elements['action'].value = action; if (toFolder) { document.forms.messages.elements['to'].value = toFolder; } document.forms.messages.submit(); } return true; }
I teraz ta newralgiczna funckja:
function countSelectedMessages() { var count = 0; var i; var f = document.getElementById('messages'); for (i=0; i<f.elements.length; i++) { if (f.elements[i].name.indexOf('mid[') == 0 && f.elements[i].checked) { count++; } } return count; }
No i efekt jest taki, za zaznaczam wiadomosci, klikam na link, wyskakuje okienko z lista folderow i gdy klikam na folder, to JavaScript zwraca blad "f has no properties" i wskazuje na linijke "for (i=0; i<f.elements.length; i++)" w funkcji countSelectedMessages.
Probowalem juz zamienic document.getElementById('messages') na document.getElementsById('messages')[0].
Probowalem tez z with(document.forms.messages){..}.
Niestety ciagle jest ten sam problem - firefox 2...
Ma ktos jakas koncepcje?
