在Firefox中未定义e.srcElement?

时间:2012-11-28 09:41:11

标签: jquery

我正在开发一个网站,现在正在所有浏览器中测试,我目前正在使用firefox进行测试,并在使用event.sourceElement时发现并出错?

我需要e.srcElement做的是返回值,下面有一点我展示了如何获得返回值PropID的示例。

我编写了一个使用e.srcElement的Jquery函数,它看起来如下:

$(function () {
        $(".DownloadLink").click(function (e) {
            e.preventDefault();

            var PropID = getParameterByName("PropID", e.srcElement.search),
                Token = getParameterByName("Token", e.srcElement.search),
                TrackingNumber = getParameterByName("TrackingNumber", e.srcElement.search);

            $.post("Valuation", { PropID: PropID, Token: Token, TrackingNumber: TrackingNumber}, function (taskId) {

                // Init monitors

                $("#dialog-modal").append($("<p id='" + taskId + "'/>"));
                updateMonitor(taskId, "Started");

                // Periodically update Modal
                var intervalId = setInterval(function () {
                    $.post("Progress", { id: taskId }, function (progress) {
                        if (progress < 50) {
                            updateMonitor(taskId, "Building File");
                        } else if (progress == 50) {
                            updateMonitor(taskId, "Uploading File to FormMobi");
                        } else if (progress >= 100) {
                            clearInterval(intervalId);
                            updateMonitor(taskId, "Complete");
                            window.location.href = "downloadcomplete";
                        }
                    });
                }, 100);
            });
        });

e.srcElement的工作原理示例:

在chrome中测试并使用inspect元素时,我会发现以下行返回:

代码行:

  

PropID = getParameterByName(“PropID”,e.srcElement.search)

返回结果:

  

搜索:   “PROPID = 77301&安培;令牌= 74d30c0e-b4ab-4164-9dfd-f35fd7091cdc&安培; TrackingNumber = 367”

所以我可以获得所需的PropID结果。


还有其他一些原因让我返回所需的值吗?要么 如何让e.srcElement在fireFox中工作?

3 个答案:

答案 0 :(得分:22)

在Firefox中

只需调用e.target即可。而不是e.srcElement [仅适用于IE]

答案 1 :(得分:7)

function getTarget(obj) {
    var targ;
    var e=obj;
    if (e.target) targ = e.target;
    else if (e.srcElement) targ = e.srcElement;
    if (targ.nodeType == 3) // defeat Safari bug
        targ = targ.parentNode;
    return targ;
}

如果您传递了目标,将返回所有浏览器的目标

来自: - http://www.quirksmode.org/js/events_properties.html

答案 2 :(得分:2)

简单如

var val= (e.srcElement||e.target).value;
console.log(val);