Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Обработчик window.onload блокирует window.onresize. Что делать? (https://javascript.ru/forum/events/59535-obrabotchik-window-onload-blokiruet-window-onresize-chto-delat.html)

Сергей5739 15.11.2015 18:42

Обработчик window.onload блокирует window.onresize. Что делать?
 
Два обработчика конфликтуют. Когда их два, тогда onload блокирует другой, если без onload, тогда onresize работает нормально. И в onload и в onresize одна функция стоит. Вот код:
<script type="text/javascript">
var w = document.documentElement.clientHeight;
var f = 290;

var c = Math.max(
	document.body.scrollHeight, document.documentElement.scrollHeight,
	document.body.offsetHeight, document.documentElement.offsetHeight,
	document.body.clientHeight, document.documentElement.clientHeight
);
var d1 = document.getElementById('head').offsetHeight;
var d2 = document.getElementById('nav').offsetHeight;
var d3 = document.getElementById('foot').offsetHeight;
var g = c - d1 - d2 - d3  ;

 

       function j() {
if (w > f) {
   document.getElementById("con").style.height = g + 'px' ;
  
 }
};

window.onload = j;
 
window.onresize = j;

</script>

рони 15.11.2015 20:48

Сергей5739,
а так?
window.onload = function() {
    window.onresize = j;
    j()
}

Сергей5739 15.11.2015 21:47

Цитата:

Сообщение от рони (Сообщение 396267)
Сергей5739,
а так?
window.onload = function() {
    window.onresize = j;
    j()
}

Спасибо, но не помогает.

рони 15.11.2015 21:51

Сергей5739,
почему у вас первые строки вне функции?
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

Сергей5739 15.11.2015 22:52

Цитата:

Сообщение от рони (Сообщение 396276)
Сергей5739,
почему у вас первые строки вне функции?
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

Я просто так код скопировал, так то он у меня вот в таком теге <script type="text/javascript"> </script>
Сам код находится в файле php. Сайт на движке друпал 7.

рони 15.11.2015 22:56

Сергей5739,
то есть не форматнуть никак ваше первое сообщение?

Сергей5739 15.11.2015 23:04

Цитата:

Сообщение от рони (Сообщение 396287)
Сергей5739,
то есть не форматнуть никак ваше первое сообщение?

Так я его сразу и исправил. Я просто написал, что так код скопировал, что ошибки в этом плане не было.

рони 15.11.2015 23:11

Цитата:

Сообщение от Сергей5739
Так я его сразу и исправил.

надо нажать кнопку
появится тег
а внутрь поместить ваш код

рони 15.11.2015 23:16

Сергей5739,
<script>
 function j() {
     var w = document.documentElement.clientHeight;
     var f = 290;
     var c = Math.max(
         document.body.scrollHeight, document.documentElement.scrollHeight,
         document.body.offsetHeight, document.documentElement.offsetHeight,
         document.body.clientHeight, document.documentElement.clientHeight
     );
     var d1 = document.getElementById('head').offsetHeight;
     var d2 = document.getElementById('nav').offsetHeight;
     var d3 = document.getElementById('foot').offsetHeight;
     var g = c - d1 - d2 - d3;
     if (w > f) {
         document.getElementById("con").style.height = g + 'px';

     }
 };

 window.onload = function() {
     window.onresize = j;
     j()
 }

</script>

рони 15.11.2015 23:37

Сергей5739,
так работает? код из 9 поста


Часовой пояс GMT +3, время: 16:43.