0

编辑:这个问题很愚蠢,因为我在其他地方犯了一个错误导致它。

我决定今天在 Opera 上测试我的网站,发现它在 Chrome 和 FF 中运行良好。所以我下载了最新的 Opera for Ubuntu 并尝试登录我的网站。BLEH。

由于某种原因,它无法识别我绑定到表单的“提交”事件的任何功能,我需要验证等。我通常addEvent(element, eventtype, callback)会执行对addEventListeneror的相关调用attachEvent

正如我所说,这在 Chrome 和 Firefox 中都能完美运行。我什至试过

addEvent(loginForm, 'submit', function(){alert("It works");});

但完全没有反应。因此,它甚至不是像我最初想到的那样停止默认操作,而是实际上根本没有绑定事件!关于上面的例子,我可以确认loginForm确实包含对实际表单元素的引用。

有人知道 Opera 发生了什么吗?

编辑:下面是我的addEvent功能

function addEvent (obj, evt, callback) {
    if (evt=="mousewheel")
        evt = (/Firefox/i.test(navigator.userAgent))? "DOMMouseScroll" : "mousewheel"
    if (obj.addEventListener){
        obj.addEventListener(evt, callback, false);
    } else {
        obj.attachEvent("on" + evt, callback);
    }
}
4

2 回答 2

0

这是另一个无耻的框架插件......

YAHOO.Util.Event.on( loginForm, 'click', function(e){
    alert('It definitely works now!');
} );

如果你热衷于添加一些 YUI/jquery 或者不:D

于 2011-07-13T11:52:45.523 回答
0

我复制了你的代码,见下文:

window.onload = function(){

    var loginForm = document.getElementById("frm");

    function addEvent (obj, evt, callback) {
        if (evt=="mousewheel") {
            evt = (/Firefox/i.test(navigator.userAgent))? "DOMMouseScroll" : "mousewheel"
        }
        if (obj.addEventListener){
            obj.addEventListener(evt, callback, false);
        } else {
            obj.attachEvent("on" + evt, callback);
        }
    }

    addEvent(loginForm, 'submit', function(){alert("It works");});
}

它有效。虽然我目前在 Opera 的 PC 上。

您是否尝试过使用 Dragonfly 来查看是否有任何错误?

于 2011-07-13T12:21:30.493 回答