【问题标题】:e.srcElement is undefined in firefox?e.srcElement 在 Firefox 中未定义?
【发布时间】:2016-08-11 19:29:21
【问题描述】:

我正在开发一个网站,现在正在所有浏览器中进行测试,我目前正在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 中工作?

【问题讨论】:

    标签: jquery


    【解决方案1】:

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

    【讨论】:

    • e.target 将在 IE 以外的所有浏览器中运行。在 IE 中您需要调用 e.srcElement
    • 好的,谢谢,我会打电话给 e.target.search 还是只打电话给 e.target?
    • e.target 而不是 e.srcElement
    • 是的,但 Chrome 似乎也返回了 e.srcElement。
    • 仅供参考 e.target 在最近的 IE 中也可以使用。没有检查它开始的时间。
    【解决方案2】:
    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

    【讨论】:

      【解决方案3】:

      简单到

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

      【讨论】:

      • 请用几句话解释你的答案,否则就像评论一样。
      猜你喜欢
      • 2019-11-13
      • 2017-01-07
      • 2018-06-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-21
      • 1970-01-01
      相关资源
      最近更新 更多