javascript - 触发事件 Javascript IE

标签 javascript events dom-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 和任何其他大型框架都无法使用!

最佳答案

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

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

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

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

关于javascript - 触发事件 Javascript IE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11913372/

相关文章:

javascript - 按下箭头键时是否可以防止文档滚动?

javascript - Jquery:似乎无法获取选择标签更改

c# - 与 lambda 一起使用的弱事件处理程序模型

javascript - Vue.JS:为什么父元素不会接收事件?父组件必须是自定义组件吗?

JavaScript 任务调度、宏任务和微任务

javascript - js 中的焦点元素

javascript - js中如何去掉touchevent?

javascript - Mozilla 开发者网络上的嵌套函数和闭包的描述中缺少什么?

javascript - 如何修复 Nav 和 Tab 两者

javascript - 点击Chrome扩展程序中的页面