Jump to content

Spavel_74

User
  • Posts

    54
  • Joined

  • Last visited

Everything posted by Spavel_74

  1. Не то-что проще, а надо на PHP делать.
  2. Посмотрите пример function getElementPosition(offsetTrail) { var offsetLeft = 0; var offsetTop = 0; while(offsetTrail) { offsetLeft += offsetTrail.offsetLeft; offsetTop += offsetTrail.offsetTop; offsetTrail = offsetTrail.offsetParent; } return { left:offsetLeft, top:offsetTop } } function hideFootnotes() { var div = document.getElementById('current_footnote'); div.className = 'footnote_new'; div.style.display = 'none'; return false; } function showFootnote(evt, id) { var winWidth = document.body.clientWidth; var evt = evt || window.event; var o = evt.target || evt.srcElement; var div = document.getElementById('current_footnote'); var coords = getElementPosition(o); var text=id.getAttribute("description"); div.innerHTML =text; div.className = 'footnote_new_active'; div = document.getElementById('current_footnote'); var w = 220; div.style.top = (coords.top + o.offsetHeight + 3) + 'px'; if((winWidth - coords.left) < w) div.style.left = (coords.left - (w - (winWidth - coords.left - 20)))+ 'px'; else div.style.left = coords.left + 'px'; div.style.display = 'none'; div.style.display = 'block'; evt.cancelBubble = true; return false; } работает везде
  3. Всем Hello. Отрепетеровав все скрипты на Opera и IE, поставил Mozilla. В консоли ошибок вс? ок но: 1 выдаэтся сообщение при нажатии кнопки ">>" - "Скрипт на этой странице возможно занят или неотвечает ...... Остановить, продолжить" Это из-за кода в файле http://www.web-catalog.info/scriptbet/formtest.js evaltext=evaltext+" if (!"+ namewin +".closed)n"; evaltext=evaltext+" {n"; evaltext=evaltext+" if ((!"+ namewin +".closed) && ("+ namewin +".document.getElementById('ItBody')!=null)) {i=1; break;}n"; evaltext=evaltext+" } else break;n"; evaltext=evaltext+" }n"; это делается чтобы дождатся доступа к объекту body в новом окне, затем установить свойства evaltext=evaltext+" "+ namewin +".document.body.resourceobj=name_resourceobj;n"; evaltext=evaltext+" "+ namewin +".document.body.priflabel = name_priflabel;n"; 2 Окно открывается в в новом окне а не в вкладке как у оперы evaltext=" var line = 'openmoredata.php?idfield='+fieldform_id;n"; evaltext=evaltext+" "+ namewin +" =window.open(line,namewin,'top=150,left=200,width=640,height=480,scrollbars=yes,location=no,toolbar=no,directories=no,status=yes,menubar=no,resizable=yes');n"; 3 В новом окне не работает функция SetIdForResourceMultiObj (Ctrl + клик) из файла http://www.web-catalog.info/scriptbet/openmoredata.js, заместо этого выделяет бордером td Поскажите что ненравится Mozilla http://www.web-catalog.info/scriptbet/ - рабочая версия под Opera и IE Посмотреть внутриности openmoredata.php http://www.web-catalog.info/scriptbet/openmoredata.txt
  4. Примеры совершенно не работают (Opera 9.25)
  5. Есть идеи по теме?
  6. Кто то просил код? И .... ?
  7. Безопасный то безопасный, мороки много. Нужно еще привязывать корзины к пользователям, лучше тогда сессии.
  8. PHP $kol_l=$_SESSION["kol_l"]; echo " <script> var kol=$kol_l; </script> ";
  9. temp="setTimeout( 'function(){obj_receiver.options[1].selected=true;}',1);"; eval(temp); obj_receiver.value = setid; obj_receiver.onchange(); где obj_receiver , ссылка на объект select Как правельно, в каком порядке, подготовить свойства select для выполнения onChange()? Как узнать у объекта select используется ли у него метод onChange?
  10. displaytable = displaytable + "<table border='1' cellspacing='0' cellpadding='3' width='100%'>n"; while(n != openmoredata_array.length) { inn = 0; tr_id = openmoredata_array[n][0]; if (n > 0) displaytable = displaytable + "<tr id='" + tr_id +"' onDblClick='SetIdForResourceObj(this);'>n"; else displaytable = displaytable + "<tr>n"; while(inn != openmoredata_array[n].length) { displaytable = displaytable + "<td>" + openmoredata_array[n][inn] + "</td>n"; inn = inn + 1; } displaytable = displaytable + "</tr>n"; n = n + 1; } displaytable = displaytable + "</table>n"; //alert (displaytable); self.document.body.innerHTML = displaytable;
  11. Opera перехватывает onDblClick ,выделяет контент в td, открывая контекстное меню(копировать, вставить и т.д), а процедуру не выполняет. Можно ли обойти это?
  12. Можно пощупать тест http://www.web-catalog.info/scriptbet/ Посмотреть внутриности openmoredata.php http://www.web-catalog.info/scriptbet/openmoredata.txt
  13. Код нового окна http://web-catalog.info/openmoredata.rar
  14. У родителя есть на форме есть select например <select name='section' id='section' class='classobj200px' errclass='errclassobj200px' notnull='1' formatval='0' size='1' relnum='5,1' onChange='ChangeRelation(this.form,this);'> <option value='0' >Не выбранно</option> <option value='1' >Недвижимость</option> <option value='2' >Стройматериалы</option> </select> <input type='button' value=' » ' id='openmore_section' name='openmore_section' fieldform_id='72' priflabel='fid15_2lab_' onClick='OpenMoreData(this.form,"section");'> такие select создаются в php как объекты где пользователь может указать все атрибуты включая и его id и имя. (из админской части кмс) В коде за select видете кнопку которая открывает окно (OpenMoreData(this.form,"section") -код функции указан выше. В новом окне в body.resourceobj присваивается это "имя формы.section" Таким образом в новом окне я знаю не только кто родитель у окна (window.opener) , но и какой объект порадил его. В новом окне показывается расширенная информация о данных в виде таблицы, пользователь ищет нужную запись -> onDblClick -> self.close() -> в родитеском окне в объекте имя формы.section меняется значение (value) Выложить немогу т.к эта вся каша у меня на localhost
  15. Конечно же я обращаюсь к свойствам обьекта body в ново созданом окне , Дело в том что в Opera свойства забираются и вс? ок , a в IE cтавлю alert и после него доступны. Я просто непойму что не нравится IE? <body onFocus='CheckResourceObj(this);' resourceobj='' priflabel='' id='ItBody' > <script> alert ("для IE"); // trtstd=self.document.getElementById("ItBody"); valresourceobj=trtstd.resourceobj; var temp="obj_receiver=window.opener.document."+valresourceobj+";"; eval(temp); n=0; while(n != obj_receiver.length) { self.document.write(obj_receiver.options[n].text+"</br>"); n=n+1; } </script> </body>
  16. Дело в том что это очень даже интересно. Если бы было не интересно, и топика бы небыло BarrWindows = new Array(); // используется в OpenMoreData function OpenMoreData(fel,nameopermore) { var n=0; var objbutton = window.event.srcElement; var fieldform_id = objbutton.getAttribute("fieldform_id"); var temp="obj=document."+fel.id+"."+nameopermore+";"; try {eval(temp);} catch (exception) {obj=null; fieldform_id=null;} if ((obj!=null) && (fieldform_id!=null)) { var name_priflabel = objbutton.getAttribute("priflabel")+obj.name; var item_count=obj.length; if ((item_count==1) && (obj.options[0]!=null) && (obj.options[0].value==0)) item_count=0; if (item_count==0) alert("Внимание, объект пуст!nНет необходимости открывать данные этого объекта."); else { var name_resourceobj=fel.id+"."+obj.name; var namewin=fel.id+'_'+obj.name; var namewin_new=fel.id+'_'+obj.name+'_'+randomNumber(); /// n=0; while(n != BarrWindows.length) { if (BarrWindows[n].indexOf(namewin)>-1) { namewin=BarrWindows[n]; break; } n=n+1; } if (n==BarrWindows.length) { BarrWindows[BarrWindows.length]=namewin_new; namewin=namewin_new; } /// evaltext=" var line = 'openmoredata.php?idfield='+fieldform_id;n"; evaltext=evaltext+" "+ namewin +" =window.open(line,namewin,'top=150,left=200,width=640,height=480,scrollbars=yes,location=no,toolbar=no,directories=no,status=no,menubar=no,resizable=yes');n"; evaltext=evaltext+" i=0;n"; evaltext=evaltext+" while(i != 1)n"; evaltext=evaltext+" {n"; evaltext=evaltext+" if (!"+ namewin +".closed)n"; evaltext=evaltext+" {n"; evaltext=evaltext+" if ((!"+ namewin +".closed) && ("+ namewin +".document.getElementById('ItBody')!=null) && ("+ namewin +".document.getElementById('modhref')!=null)) {i=1; break;}n"; evaltext=evaltext+" } else break;n"; evaltext=evaltext+" }n"; evaltext=evaltext+" //alert('переменная= '+"+ namewin +"+' i= '+i+' clos= '+"+ namewin +".closed)n"; evaltext=evaltext+" if ((i==1) && ("+ namewin +"!=null) && (!"+ namewin +".closed))n"; evaltext=evaltext+" {n"; evaltext=evaltext+" "+ namewin +".document.body.resourceobj=name_resourceobj;n"; evaltext=evaltext+" "+ namewin +".document.body.priflabel = name_priflabel;n"; evaltext=evaltext+" "+ namewin +".document.getElementById('dgdgdgdgdgdg').value = name_priflabel;n"; evaltext=evaltext+" }n"; //evaltext=evaltext+" "+ namewin +".document.body.newAttribute = 'priflabel';n"; //newAttribute = "defclass"; err=0; try { err=1; temp="NewOpenWin="+namewin; eval(temp); if ((NewOpenWin!=null) && (!NewOpenWin.closed)) //окно уже есть и не закрыто { NewOpenWin.focus(); } else {err=2; eval(evaltext);} } catch (exception) { if (err==1) { try { //alert(evaltext); eval(evaltext); } catch (exception) { objbutton.focus(); alert("При загрузке новой страницы, произошла ошибка."); } } } } } else { objbutton.style.display = 'none'; alert("Системная ошибка.n?2507"); } return true; } Код открывает новое окно и устанавливает параметры priflabel и name_resourceobj для body нового окна. У меня ОЧЕНЬ ИНТЕРЕСНЫЙ ВОПРОС, поясню: evaltext=evaltext+" if ((!"+ namewin +".closed) && ("+ namewin +".document.getElementById('ItBody')!=null) && ("+ namewin +".document.getElementById('modhref')!=null)) {i=1; break;}n"; Жд?т пока объекты будут доступны. - modhref выставлен перед
  17. Такое ощущение что все кто здесь, вообще плохо знакомы с объектами - window и их иерархией. Или что то знают, но и то от части....
  18. Или узнать у созданного "нового" окна, новое оно или перезагруженное с новым Url
  19. MyWin=window.open("Url","MyWin"); если окно есть, даже если переменной MyWin нет. Url пойдет в location окна MyWin и перезапустит его. А если окна нет, созда?тся новое. Возможно ли отловить момент когда окно созда?тся как новое, и момент когда окно перезагружается с location = Url?
  20. Сделал то что хотел function OpenMoreData(fel,nameopermore) { var objbutton = window.event.srcElement; var fieldform_id = objbutton.getAttribute("fieldform_id"); var temp="obj=document."+fel.name+"."+nameopermore+";"; eval(temp); if ((obj!=null) && (fieldform_id!=null)) { var name_resourceobj=fel.name+"."+obj.name; var namewin=fel.name+'_'+obj.name; evaltext=" var line = 'openmoredata.php?idfield='+fieldform_id;"; evaltext=evaltext+" "+ namewin +"=window.open(line,namewin,'top=150,left=200,width=640,height=480,scrollbars=yes,location=no,toolbar=no,directories=no,status=no,menubar=no,resizable=yes');"; evaltext=evaltext+" i=0;"; evaltext=evaltext+" while(i != 1)"; evaltext=evaltext+" {"; evaltext=evaltext+" if (!"+ namewin +".closed)"; evaltext=evaltext+" {"; evaltext=evaltext+" if ((!"+ namewin +".closed) && ("+ namewin +".document.getElementById('ItBody')!=null)) {i=1; break;}"; evaltext=evaltext+" } else break;"; evaltext=evaltext+" }"; evaltext=evaltext+" if ((i==1) && (!"+ namewin +".closed))"; evaltext=evaltext+" {"; evaltext=evaltext+" "+ namewin +".document.body.resourceobj=name_resourceobj;"; evaltext=evaltext+" "+ namewin +".focus();"; evaltext=evaltext+" }"; try { temp="NewOpenWin="+namewin; eval(temp); if ((NewOpenWin!=null) && (!NewOpenWin.closed)) //окно уже есть и не закрыто { NewOpenWin.focus(); } else eval(evaltext); } catch (exception) { eval(evaltext); } } }
  21. Иму надо после каждой перезагрузке знать эту переменную (корзину). Единственное если один фрем перезазружать а другой оставлять. Лучше тогда сookies или session -> талкать из не? в JS
  22. Вс? дошло. Еврика!!!!! спасибо.
  23. Сделал Вот так var line = 'openmoredata.php?idfield='+fieldform_id; NewOpenWin=window.open(line,'tytrwrrr','top=150,left=200,width=640,height=480,scrollbars=yes,location=no,toolbar=no,directories=no,status=no,menubar=no,resizable=yes'); i=0; while(i != 1) { if (!NewOpenWin.closed) { if ((!NewOpenWin.closed) && (NewOpenWin.document.getElementById("ItBody")!=null)) {i=1; break;} } else break; } if ((i==1) && (!NewOpenWin.closed)) { NewOpenWin.document.body.resourceobj=name_resourceobj; NewOpenWin.focus(); //alert(NewOpenWin.document.body.resourceobj); //NewOpenWin.document.body.style.backgroundColor='Red'; //alert ("окно закгрузилось"); } Вроде работает, У меня вопрос: имя окна назначено как tytrwrrr, нужно сделать так чтобы окно , если оно открыто не открывать, а просто focus?
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy