|
|
|
| Здравствуйте знатоки javascript,
помогите с решением следующей проблемы:
имеется фреймовая структура
<html>
<HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1251">
</HEAD>
<FRAMESET id="outterframe" ROWS="19,*" FRAMEBORDER="YES" BORDER="5" BORDERCOLOR="#5F5F7F" MARGINWIDTH="0" MARGINHEIGHT="0" SCROLLING="NO">
<FRAME name="systemapp" id="systemapp" SCROLLING="NO" FRAMEBORDER="NO" SRC="SystemApp.htm" MARGINWIDTH="0" MARGINHEIGHT="0" SCROLLING="NO" NORESIZE>
<FRAMESET class="sHistory" id="frames2" name="frames2" COLS="25%,*" BORDER="5" MARGINWIDTH="0" MARGINHEIGHT="0">
<FRAME name="systemtree" id="systemtree" FRAMEBORDER="NO" SRC="SystemTree.htm" SCROLLING="NO" MARGINWIDTH="0" MARGINHEIGHT="0">
<FRAME name="mainWindow" id="mainWindow" FRAMEBORDER="NO" SRC="clock.htm" SCROLLING="AUTO" MARGINWIDTH="0" MARGINHEIGHT="0">
</FRAMESET>
</FRAMESET>
</html>
|
и соответственно сами документы во фреймах:
документ SystemTree.htm
<HTML>
<HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1251">
<script language=javascript type="text/javascript">
function setfocus() {
top.document.getElementById("outterframe").document.getElementById("frames2").document.getElementById("mainWindow").document.focus(); // передаем фокус основному окну
}
</script>
</HEAD>
<BODY bgcolor="#C0C0C0" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0">
<a href="javascript:setfocus();">передать фокус</a>
</BODY>
</html>
|
документ SystemApp.htm
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<script language=javascript type="text/javascript">
function setfocus() {
top.document.getElementById("outterframe").document.getElementById("frames2").document.getElementById("mainWindow").document.focus(); // передаем фокус основному окну
}
</script>
</head>
<body>
<a href="javascript:setfocus();">передать фокус</a>
</body>
</html>
|
и для тестирования получения фокуса
clock.htm
<HTML><HEAD><SCRIPT>
var flag=false;
function clock()
{ if(flag)
{
var d = new Date();
document.f.e.value =
d.getHours() + ':' +
d.getMinutes() + ':' +
d.getSeconds();
}
setTimeout('clock();',100);
}
</SCRIPT></HEAD>
<BODY onLoad='clock()' onFocus='this.flag=true' onBlur='this.flag=false'>
<FORM NAME="f">
<INPUT NAME="e">
</FORM>
</BODY>
</HTML>
|
Как показано в коде не получается передать фокус центральному окну, подскажите пожалуйста где я неправ
Заранее благодарен за любую информацию по данной теме. | |
|
|
|
|
|
|
|
для: msgipss
(03.08.2010 в 14:44)
| | У Вас бред какой-то написан.
В общем, функция передачи фокуса должна быть такой:
function setfocus () {top.frames ['mainWindow'].document.f.e.focus ()}
| "Простенько и со вкусом!"(с)
Далее - тег <BODY> получить фокус НЕ МОЖЕТ.
Фокус может получить ОКНО (window) или тег <INPUT>.
Соответственно, Ваша "проверка" работать не будет, ибо написанные Вами onfocus и onblur для тега <BODY> - "пустой звук". В общем, сделайте так:
<BODY onLoad='clock()' >
<FORM NAME="f">
<INPUT NAME="e" onFocus='flag=true' onBlur='flag=false'>
</FORM>
| Хотя я не знаю - чего Вы там "напроверяете" - value у <INPUT> надо хотя бы сбрасывать при потере фокуса. Добавьте строчку:
else document.f.e.value = '';
setTimeout('clock();',100);
|
Из какого "источника" Вы, кстати, узнали, что у тега <FRAMESET> есть атрибуты MARGINWIDTH, MARGINHEIGHT и SCROLLING ?
Выбросьте этот "источник" - нет таких атрибутов у этого тега. | |
|
|
|
|
|
|
|
для: АЯ
(03.08.2010 в 15:16)
| | извините не разобрался как ответить? оказывается новую ветку создал :)
дело в том что в левом фрейме у меня дерево навигации, и при загрузке документа в центральный фрейм я хочу передать фокус ввода в этот фрейм - вот такая задача, т.е. не конкретному элементу документа, а окну в котором заведомо не известно какие элементы могут находится. Для этого и сделан тест на получения окном фокуса, т.е. если мышью тыкаем то передаем фокус - счетчик крутиться - так вот это сделать программно :) | |
|
|
|
|
|
|
|
для: msgipss
(03.08.2010 в 15:44)
| | Уменьшаем функцию передачи фокуса до неприлично малой:
function setfocus () {top.frames ['mainWindow'].focus ()}
|
Файл clock.htm переписываем ТАК:
<SCRIPT>
var flag=false;
function clock()
{ if(flag)
{
var d = new Date();
document.f.e.value =
d.getHours() + ':' +
d.getMinutes() + ':' +
d.getSeconds();
}
else document.f.e.value = '';
setTimeout('clock();',100);
}
window.onfocus = function () {flag = true}
window.onblur = function () {flag = false}
window.onload = clock;
</SCRIPT></HEAD>
<BODY>
<FORM NAME="f">
<INPUT NAME="e" disabled>
</FORM>
</BODY>
|
| |
|
|
|
|
|
|
|
для: АЯ
(03.08.2010 в 16:10)
| | мдяяяя, действительно работает...
а я как бы все варианты перепробовал уже :(
Большое спасибо за разъяснения и за неприлично маленькую функцию :) | |
|
|
|