繁体   English   中英

触发事件 Javascript IE

[英]Trigger Event Javascript IE

我遇到了一个简单的问题,无法正常工作:我试图在 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 和任何其他大型框架都无法使用!

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM