【问题标题】:getPreventDefault() - Is it possible to overwrite, replace or something like that?getPreventDefault() - 是否可以覆盖、替换或类似的东西?
【发布时间】:2017-04-10 13:36:14
【问题描述】:

我有一个非常模块化的应用程序,并且使用了很多 getPreventDefault(),这需要我几天时间才能在所有文件中将其更改为 defaultPrevented。

我在 Windows 7 中,所以某种递归脚本对那个项目来说太不安全了。

我试图让 getPreventDefault() 使用 defaultPrevented,类似于:

function getPreventDefault(e) {
        return defaultPrevented(e);
}

我尝试了很多其他方法,但没有...

有可能吗?我的想法是在没有警告的情况下继续使用 getPreventDefault(),直到我完成修复一些问题,然后再返回更改它。

测试警告删除的简单代码...

<!DOCTYPE html>
<html>
        <head>
                <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>

                <script>
                        function OnBodyClick (event) {
                                if (event.getPreventDefault) {  // Firefox, Opera, Google Chrome and Safari
                                        if (event.getPreventDefault ()) {
                                                console.log ("The default action is canceled.");
                                        } else {
                                                console.log ("The default action is not canceled.");
                                        }
                                }
                        }
                </script>
        </head>
        <body onclick="OnBodyClick(event)">
        </body>
</html>

【问题讨论】:

  • 为什么不能进行文件搜索和替换?
  • 这是不安全的,一旦它是一个 Windows 脚本,而不是 POSIX,另一个人应该运行,因为我只能访问页面的“我的部分”,这是一个多国网络系统,老大陆的朋友没时间修,所以我先把这个warings(大概200以上)去掉,然后再帮他们修。
  • 您不应该根据您的 getPreventDefault 函数使用 getPreventDefault(event) 而不是 event.getPreventDefault 吗?
  • 现在每个人都需要使用 defaultPrevented,因为 getPreventDefault 已被弃用并显示警告,这就是为什么我需要以某种方式让 getPreventDefault 调用 defaultPrevented 而不是内置函数......因为警告的数量(更多超过 1000),我们开始更新 de 应用程序以在已弃用的函数成为已删除的函数之前删除此警告。

标签: javascript jquery firefox deprecated preventdefault


【解决方案1】:

使用 javascript 原型覆盖应该没问题

Object.prototype.getPreventDefault = function (e) {       
    return e.defaultPrevented;
}

如果你想覆盖一个 jQuery 函数,你可以在加载 jQuery 之后使用这个代码

(function ($) {    
    $.fn.getPreventDefault = function(e) {
        return e.defaultPrevented;
    };
})(jQuery);

【讨论】:

  • 我都试过了,FF(可能是其他人)仍然显示警告消息,我发布了一个更新,其中包含一个显示警告的简单代码。
  • 似乎 FF 总是显示警告消息并且不允许覆盖 getPreventDefault 函数。因此,我强烈建议您更新您的代码并替换每个 getPreventDefault,这需要大量工作.. 但是您现在执行此操作会更快,而不是搜索修补程序然后再执行此操作。问候
【解决方案2】:

defaultPreventedEvent属性,因此您必须像这样编写函数:

function getPreventDefault(e) {
    return e.defaultPrevented;
}

【讨论】:

  • 我试过了,FF(可能是其他人)仍然显示警告消息,我发布了一个更新,其中包含一个显示警告的简单代码。
猜你喜欢
  • 1970-01-01
  • 2011-04-13
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 2017-12-08
  • 2014-02-15
  • 1970-01-01
相关资源
最近更新 更多