feritailor
22.12.2009, 19:10
Попытаюсь в кратце объяснить суть проблемы...
На страницу выводится таблица. Перед таблицей есть контейнер
<div id='p_1' style=\"width: 500; margin: 0px; display: none; position: absolute;\"></div>
в таблице присутствует елемент
<input type=' src='./image.gif' onClick="pos(event.clientX, event.clientY); foo('val1')">
при нажатии на который, функция pos(x,y)
function pos(x,y){
z=document.getElementById('p_1');
z.style.top=y+5+document.body.scrollTop;
z.style.left=x-510;
z.style.display='block';
}
устанавливает координаты верхнего левого угла контейнера "p_1" в место клика и делает его видимым. Функция foo() пишет в этот контейнер некую информацию.
Среди этой информации и такая "кнопочка"
<a href='#' onClick="document.getElementById('p_1').style.display='none ';"
которая выключает видимость контейнера.
А теперь вопрос...
Весь задуманный функционал работает... за исключением одного: при нажатии на эту "кнопку" (если можно ее так назвать) фокус устанавливается в начало документа.
Пробовал дописывать в тело кнопки строки
window.scrollTo(x,y); element.focus();
(ясное дело что не вместе..:thanks: )
но это не приводило к желаемому результату. Фоукс устанавливался в нужное место - но потом опять в начало страници...
Мои исследования привели меня к мысли что это все изза использования Ajaxa.
Вот функция, загружающая содержимое в контейнет 'p_1':
var xmlhttp;
function foo(value)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
{
alert ("Browser does not support HTTP Request");
return;
}
var url="script.php";
url=url+"?q="+value;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChanged_tm;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}
function stateChanged_tm()
{
if (xmlhttp.readyState==4)
{
document.getElementById("p_1").innerHTML=xmlhttp.responseText;
}
}
function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
return new XMLHttpRequest();
}
if (window.ActiveXObject)
{
// code for IE6, IE5
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}
На страницу выводится таблица. Перед таблицей есть контейнер
<div id='p_1' style=\"width: 500; margin: 0px; display: none; position: absolute;\"></div>
в таблице присутствует елемент
<input type=' src='./image.gif' onClick="pos(event.clientX, event.clientY); foo('val1')">
при нажатии на который, функция pos(x,y)
function pos(x,y){
z=document.getElementById('p_1');
z.style.top=y+5+document.body.scrollTop;
z.style.left=x-510;
z.style.display='block';
}
устанавливает координаты верхнего левого угла контейнера "p_1" в место клика и делает его видимым. Функция foo() пишет в этот контейнер некую информацию.
Среди этой информации и такая "кнопочка"
<a href='#' onClick="document.getElementById('p_1').style.display='none ';"
которая выключает видимость контейнера.
А теперь вопрос...
Весь задуманный функционал работает... за исключением одного: при нажатии на эту "кнопку" (если можно ее так назвать) фокус устанавливается в начало документа.
Пробовал дописывать в тело кнопки строки
window.scrollTo(x,y); element.focus();
(ясное дело что не вместе..:thanks: )
но это не приводило к желаемому результату. Фоукс устанавливался в нужное место - но потом опять в начало страници...
Мои исследования привели меня к мысли что это все изза использования Ajaxa.
Вот функция, загружающая содержимое в контейнет 'p_1':
var xmlhttp;
function foo(value)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
{
alert ("Browser does not support HTTP Request");
return;
}
var url="script.php";
url=url+"?q="+value;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChanged_tm;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}
function stateChanged_tm()
{
if (xmlhttp.readyState==4)
{
document.getElementById("p_1").innerHTML=xmlhttp.responseText;
}
}
function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
return new XMLHttpRequest();
}
if (window.ActiveXObject)
{
// code for IE6, IE5
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}