我试图弄清楚如何以编程方式将事件处理程序添加到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
}
我猜我的语法不正确。但是,我似乎无法找到任何有关此问题的文档。有人可以帮助我吗?
谢谢,
答案 0 :(得分:6)
dialogWindow.onunload + = myEventHandler不正确。这应该是:
dialogWindow.unload = myEventHandler;
或者保留现有的处理程序:
var oldHandler = dialogWindow.unload;
dialogWindow.unload = function (e)
{
if (oldHandler) { oldHandler(e); }
myEventHandler(e);
}
当然还有use JQuery。
答案 1 :(得分:1)
JavaScript仅管理对象。包含HTML5的HTML DOM元素是对象,我们可以将它们分类如下:
构建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