addEventListener not working in IE8
Try:
if (_checkbox.addEventListener) {
_checkbox.addEventListener("click", setCheckedValues, false);
}
else {
_checkbox.attachEvent("onclick", setCheckedValues);
}
Update::
For Internet Explorer versions prior to IE9, attachEvent method should be used to register the specified listener to the EventTarget it is called on, for others addEventListener should be used.
addEventListener not supporting in IE 8
IE8 does not support addEventListener()
. It has it's own attachEvent()
which is similar so you have to check if addEventListener
is there and if not, use attachEvent()
.
IE8 also does not support .forEach()
on arrays. You can either install a shim (shown here) for it or use a regular for
loop to iterate through arrays (the old fashioned way).
This is a simple cross browser event function:
// add event cross browser
function addEvent(elem, event, fn) {
if (elem.addEventListener) {
elem.addEventListener(event, fn, false);
} else {
elem.attachEvent("on" + event, function() {
// set the this pointer same as addEventListener when fn is called
return(fn.call(elem, window.event));
});
}
}
So, instead of:
sub.addEventListener("change", fn);
You would use this:
addEvent(sub, "change", fn);
and it would work in both modern browsers and older versions of IE>
Here's a little more advanced version with more features:
// refined add event cross browser
function addEvent(elem, event, fn) {
// allow the passing of an element id string instead of the DOM elem
if (typeof elem === "string") {
elem = document.getElementById(elem);
}
function listenHandler(e) {
var ret = fn.apply(this, arguments);
if (ret === false) {
e.stopPropagation();
e.preventDefault();
}
return(ret);
}
function attachHandler() {
// normalize the target of the event
window.event.target = window.event.srcElement;
// make sure the event is passed to the fn also so that works the same too
// set the this pointer same as addEventListener when fn is called
var ret = fn.call(elem, window.event);
// support an optional return false to be cancel propagation and prevent default handling
// like jQuery does
if (ret === false) {
window.event.returnValue = false;
window.event.cancelBubble = true;
}
return(ret);
}
if (elem.addEventListener) {
elem.addEventListener(event, listenHandler, false);
} else {
elem.attachEvent("on" + event, attachHandler);
}
}
addEventListener does not work in IE 11
Sounds like a dupe of Detecting the onload event of a window opened with window.open
but I could not see a specific answer of your question in it.
But why not do
window.onload=function() { opener.handle_popup() } // or attachEventListener
in the child window? Not need for attach events that may never be triggered because your attaching may be after the load triggered
TRY IT
Tested and working (after allowing popups) in Chrome Edge, IE11 and FX
jQuery addEventListener not working in IE8
Try this:
if(!bttn.addEventListener) {
bttn.attachEvent("onclick", makeExcuse);
}
else {
bttn.addEventListener("click", makeExcuse, false);
}
You must do this for IE8 and older because it is not supported in versions older than IE 9. It is documented in this, about halfway down the page.
Legacy Internet Explorer and Attach Event
addEventListener in Internet Explorer
addEventListener
is the proper DOM method to use for attaching event handlers.
Internet Explorer (up to version 8) used an alternate attachEvent
method.
Internet Explorer 9 supports the proper addEventListener
method.
The following should be an attempt to write a cross-browser addEvent
function.
function addEvent(evnt, elem, func) {
if (elem.addEventListener) // W3C DOM
elem.addEventListener(evnt,func,false);
else if (elem.attachEvent) { // IE DOM
elem.attachEvent("on"+evnt, func);
}
else { // No much to do
elem["on"+evnt] = func;
}
}
Related Topics
What's the Best Way to Make a D3.Js Visualisation Layout Responsive
How to Detect a Textbox's Content Has Changed
How to Implement Authenticated Routes in React Router 4
How to Load Data from a CSV File in D3 V5
Are All JavaScript Callbacks Asynchronous? If Not, How to Know Which Are
Creating a Jquery Object from a Big HTML-String
How to Save Image from Canvas with CSS Filters
Attach an Event in a Child Iframe to a Handler in the Parent Window
Why My Show Hide Button Needs Double-Click on First Time
Detect Rotation of Android Phone in the Browser with JavaScript
Switch Statement for Greater-Than/Less-Than
Get Hours Difference Between Two Dates in Moment Js
Why Does JavaScript Object Show Different Values in Console in Chrome, Firefox, Safari
Calling a JavaScript Function Returned from an Ajax Response
How to Make Div Fixed After You Scroll to That Div