Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
Вот что я приготовил. Это довольно просто, но он работает:
function eventFire(el, etype){
if (el.fireEvent) {
el.fireEvent('on' + etype);
} else {
var evObj = document.createEvent('Events');
evObj.initEvent(etype, true, false);
el.dispatchEvent(evObj);
}
}
Использование:
eventFire(document.getElementById('mytest1'), 'click');
Вы можете сэкономить кучу пространства, используя jQuery. Вам нужно использовать только:
$('#myElement').trigger("click")
Считаете ли вы использование jQuery, чтобы избежать обнаружения браузера? С jQuery это было бы так же просто, как:
$("#mytest1").click();
var elem = document.getElementById('mytest1');
// Simulate clicking on the specified element.
triggerEvent( elem, 'click' );
/**
* Trigger the specified event on the specified element.
* @param {Object} elem the target element.
* @param {String} event the type of the event (e.g. 'click').
*/
function triggerEvent( elem, event ) {
var clickEvent = new Event( event ); // Create the event.
elem.dispatchEvent( clickEvent ); // Dispatch the event.
}
Лучший ответ - лучший! Тем не менее, это не вызвало событий мыши для меня в Firefox, когда etype = 'click'
.
Итак, я изменил document.createEvent
на 'MouseEvents'
и это устранило проблему. Дополнительный код предназначен для проверки того, вмешивался ли какой-либо бит кода в событие, и если он был отменен, я бы зарегистрировал его для консоли.
function eventFire(el, etype){
if (el.fireEvent) {
el.fireEvent('on' + etype);
} else {
var evObj = document.createEvent('MouseEvents');
evObj.initEvent(etype, true, false);
var canceled = !el.dispatchEvent(evObj);
if (canceled) {
// A handler called preventDefault.
console.log("automatic click canceled");
} else {
// None of the handlers called preventDefault.
}
}
}
document.querySelector('[value="2706236"]').nextSibling.nextSibling.dispatchEvent(ev);
:) – PointedEars 10 March 2014 в 22:23Event.initEvent
теперь устарел developer.mozilla.org/en/docs/Web/API/Event/initEvent – artnikpro 2 March 2017 в 12:39