8

我正在开发一个网站,现在正在所有浏览器中进行测试,我目前正在 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 中进行测试并使用检查元素时,我可以发现以下行返回:

代码行:

PropID = getParameterByName("PropID", e.srcElement.search)

返回结果:

搜索:“?PropID=77301&Token=74d30c0e-b4ab-4164-9dfd-f35fd7091cdc&TrackingNumber=367”

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


还有其他一些原因让我返回所需的值吗?或者我怎样才能让 e.srcElement 在 fireFox 中工作?

4

3 回答 3

23

在 Firefox 中只需调用e.target工作即可。而不是e.srcElement[仅在 IE 中有效]

于 2012-11-28T09:42:15.330 回答
8
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;
}

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

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

于 2013-07-11T22:52:13.917 回答
2

简单如

var val= (e.srcElement||e.target).value;
console.log(val);
于 2016-08-11T11:29:21.277 回答