触发事件Javascript IE

时间:2012-08-11 09:05:03

标签: javascript events javascript-events internet-explorer-7

我遇到了一个简单的问题而且无法正常工作: 我试图在IE 7中触发事件。为此,我尝试了以下操作:

if (typeof fireEvent != 'function') {
    function fireEvent(target, evt) {
        if (document.createEvent) {
            var clickEvent = document.createEvent("MouseEvents");
            clickEvent.initMouseEvent(evt, true, true, window,
                0, 0, 0, 0, 0, false, false, false, false, 0, null);
            return target.dispatchEvent(clickEvent);
        }
        else {
            return target.fireEvent("on" + evt);
        }
    }
}

然而,这不起作用。 IE 7中未触发该事件。 Jquery触发器可以在IE 7中运行,但是,我无法使用它,因为它在我的Java应用程序中创建了一个内存泄漏(大约400MB内存泄漏)并且脚本正在消耗这个原因。

我尝试过的是使用Javascript(http://accounts.google.com/)进行简单登录:

document.getElementById('Email').value = "%s";
document.getElementById('Passwd').value = "%s";
var signIn = document.getElementsByName('signIn')[0];
fireEvent(signIn, "click");

两个字段(“电子邮件”和“密码”)都已填满,但表单未提交。 作为替代方案,我尝试使用“onsubmit”事件。最后两行可以更改为:

var gaiaLoginForm = document.getElementById("gaia_loginform");
fireEvent(gaiaLoginForm, "submit");

再一次:jQuery和任何其他大框架都不可用!

1 个答案:

答案 0 :(得分:0)

你不能只是在旧的IE中“发射”这样的事件。您必须告诉浏览器您尝试触发的,而不仅仅是类型。关键是您可以在触发对象之前更改对象的属性值。试试这个:

var evtObj = document.createEventObject();
target.fireEvent("on" + evt, evtObj);

另外,我建议调查你所谓的内存泄漏的原因。

(顺便说一下,Javascript!= Java。)