Spavel_74
User-
Posts
54 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Store
Everything posted by Spavel_74
-
Не то-что проще, а надо на PHP делать.
-
Посмотрите пример 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; } работает везде
-
Всем 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
-
Примеры совершенно не работают (Opera 9.25)
-
Есть идеи по теме?
-
Кто то просил код? И .... ?
-
Безопасный то безопасный, мороки много. Нужно еще привязывать корзины к пользователям, лучше тогда сессии.
-
PHP $kol_l=$_SESSION["kol_l"]; echo " <script> var kol=$kol_l; </script> ";
-
Интересует еще select-multiple
-
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?
-
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;
-
Opera перехватывает onDblClick ,выделяет контент в td, открывая контекстное меню(копировать, вставить и т.д), а процедуру не выполняет. Можно ли обойти это?
-
Можно пощупать тест http://www.web-catalog.info/scriptbet/ Посмотреть внутриности openmoredata.php http://www.web-catalog.info/scriptbet/openmoredata.txt
-
Код нового окна http://web-catalog.info/openmoredata.rar
-
У родителя есть на форме есть 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
-
Конечно же я обращаюсь к свойствам обьекта 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>
-
Дело в том что это очень даже интересно. Если бы было не интересно, и топика бы небыло 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 выставлен перед
-
Такое ощущение что все кто здесь, вообще плохо знакомы с объектами - window и их иерархией. Или что то знают, но и то от части....
-
Или узнать у созданного "нового" окна, новое оно или перезагруженное с новым Url
-
MyWin=window.open("Url","MyWin"); если окно есть, даже если переменной MyWin нет. Url пойдет в location окна MyWin и перезапустит его. А если окна нет, созда?тся новое. Возможно ли отловить момент когда окно созда?тся как новое, и момент когда окно перезагружается с location = Url?
-
Сделал то что хотел 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); } } }
-
Иму надо после каждой перезагрузке знать эту переменную (корзину). Единственное если один фрем перезазружать а другой оставлять. Лучше тогда сookies или session -> талкать из не? в JS
-
Вс? дошло. Еврика!!!!! спасибо.
-
Сделал Вот так 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?