Обработчики событий JavaScript - PullRequest
4 голосов
/ 01 августа 2009

Я пытаюсь выяснить, как программно добавить обработчик событий в объект JavaScript. Более конкретно, я пытаюсь добавить обработчик события к событию onunload объекта окна. Я пытаюсь так без всякой удачи:

var url = "www.somelocation.com";
var specs = "location=0,menubar=0,status=0,titlebar=0,toolbar=0";

var dialogWindow = window.open(url, "dialog", specs, true);
dialogWindow.onunload += myEventHandler;

function myEventHandler(e)
{
  // Do stuff
}

Я предполагаю, что мой синтаксис неверен. Тем не менее, я не могу найти какую-либо документацию по этому поводу. Может ли кто-нибудь помочь мне?

Спасибо

Ответы [ 2 ]

6 голосов
/ 01 августа 2009

dialogWindow.onunload + = myEventHandler неверно. Это действительно должно быть:

dialogWindow.unload = myEventHandler;

Или для сохранения существующих обработчиков:

var oldHandler = dialogWindow.unload;
dialogWindow.unload = function (e) 
{
   if (oldHandler) { oldHandler(e); }
   myEventHandler(e);
}

И, конечно же, используйте JQuery .

1 голос
/ 27 марта 2019

Javascript управляет только объектами. Элементы HTML DOM, включая HTML5, являются объектами, мы можем классифицировать их следующим образом:

  1. Объект Window, который имеет все события
  2. Объект IFRAME, такой же полный, как Window (именно поэтому он используется Youtube)
  3. DOM-объекты, которые имеют только события управления, click, mouseup, mouseDown ... а также свои собственные события (аудио, видео, DIV BLOCK) и т. Д.

Создание объектов JAVASCRIPT немного похоже на Visual Basic или C ++.

Событиями легко управлять, мы можем смешивать события смартфонов и компьютеров. Чтобы обеспечить поддержку старых браузеров SAFARI, IE, просто избегайте использования определенных ключевых слов, таких как (LET, =>, или значений в параметрах функций, таких как X = 1).

Управление событиями:

    var mouseup = (!('ontouchstart' in document.documentElement))? 'mouseup':'touchend';
    var winresize = (!('ontouchstart' in document.documentElement))? 'resize':'orientationchange';
    var mouseover = (!('ontouchstart' in document.documentElement))? 'mouseover':'touchstart';
    var mouseout = (!('ontouchstart' in document.documentElement))? 'mouseout':'touchend';

Для обеспечения совместимости:

 var Event_mouseup = function (e)(
       Code mouseup.......
 };

if(object.addEventListener){
object.addEventListener(mouseup,Event_mouseup,{passive:true});  //passive true not return event
}else if(object.attachEvent){
object.attachEvent(mouseup,Event_mouseup);
}else{
object['on'+mouseup]=Event_mouseup;
};

Объект Window работает точно так же.

Загрузка события действительно особенная для HTML-страницы.

Объекты, которые обрабатывают это событие, являются объектами, которые загружают данные, такие как IMG, VIDEO, AUDIO и т. Д.

Как правило, когда у объекта есть событие загрузки, оно также имеет событие загрузки с ошибкой.

Чтобы понять DOM и браузер, вы должны сравнить его, например, с окном C ++.

Window ----------------------- event Load -------- Object 1 HTML DOM --------- event1 Object --------- event2 Object -------- Object 2 HTML DOM --------- event1 Object --------- event2 Object ---------------------- event unload Window

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...