Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Конфликт window.onload?
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Конфликт window.onload?

Страниц (1): [1]
 

1. Uchkuma - 15 Апреля, 2011 - 11:26:12 - перейти к сообщению
Использую визуальный редактор SPAW v.2. А также использую свои скрипты на сайте.
Определенные javascript-функции запускаю следующим образом:
CODE (javascript):
скопировать код в буфер обмена
  1. startInit = function(){
  2. request('tpl');
  3. changeType();
  4. changeLang();
  5. }
  6. window.onload = startInit;

Ниже подключается редактор, который вставляет в страницу примерно следующее:
CODE (html):
скопировать код в буфер обмена
  1. <script type="text/javascript" id="content_ru__script">
  2. <!--
  3. SpawEngine.setSpawDir("/inc/lib/spaw/");
  4.  
  5. лишний код опущен
  6.  
  7. content_ru__obj.onLoadHookup();
  8. //-->
  9. </script>


Нашел onLoadHookup в классе редактора:
CODE (javascript):
скопировать код в буфер обмена
  1. SpawEditor.prototype.onLoadHookup = function()
  2. {
  3.   var spaw_tmpstr="";
  4.   if (window.onload != null)
  5.   {
  6.     spaw_tmpstr = window.onload.toString();
  7.     var spaw_i = spaw_tmpstr.indexOf("{") + 2;
  8.     spaw_tmpstr = spaw_tmpstr.substr(spaw_i,spaw_tmpstr.length-spaw_i-2);
  9.   }
  10. window.onload = new Function(this.name+'_obj.initialize();'+spaw_tmpstr);
  11.  
  12. }


В IE обнаружилась частичная неработоспособность редактора. Причем лишь на некоторых сайтах, но систематически. Интересный момент. После очистки кеша и первичной загрузки страницы с редактором, все отрабатывает нормально и с редактором можно работать. При всех последующих загрузках та же хрень. Чуть дольше загрузка страницы и работает? Однако

Может ли это быть из-за конфликта window.onload? И как в моем случае изменить вызов функций, чтобы этого избежать? Познания мои в javascript очень общие.
2. valenok - 15 Апреля, 2011 - 11:47:25 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. // cross browser event handling
  3. function addEvent( el, type, fn ) {
  4.   if ( window.addEventListener ) {
  5.     el.addEventListener( type, fn, false );
  6.   } else if ( window.attachEvent ) {
  7.     el.attachEvent( "on" + type, fn );
  8.   } else {
  9.     var old = el["on" + type];
  10.     el["on" + type] = function() {old();fn();};
  11.   }
  12.  
  13. }
  14.  
  15. addEvent(window, 'load', startInit);
  16.  
  17.     SpawEditor.prototype.onLoadHookup = function()
  18.     {
  19.          addEvent(window,'load', new Function(this.name+'_obj.initialize()') );
  20.     }
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  

 

Powered by ExBB FM 1.0 RC1