javascript - 重构 onload 以添加第二个功能?奖励:一般来说,向变量添加第二个函数怎么样?
问题描述
我有两个问题顺序?
我有两组要重构的代码。每个都有一个负载。
两者都将在站点上自行运行,但我不希望它们覆盖彼此的加载。
所以我有以下等价物:
window.onload=function(){ alert("foo")};
和
window.onload=function(){ alert("bar")};
在两个文件中。
为了避免一个覆盖另一个的 window.onload 分配,我将它们重构为:
window.onload+=function(){ alert("foo")};
和
window.onload+=function(){ alert("bar")};
但后来似乎两者都没有起火。
而且由于它似乎可以帮助我了解情况并且通常是一项不错的技能,所以我如何向函数变量添加额外的函数?(它与 onload 相同,还是 onload 是一个特殊情况?它让我觉得可能有特殊情况。)
所以如果我有...
var Varrick = function(){ alert("Do the thing!");}
我有
var Zhu_li = function (){ alert("Did the thing."); }
什么是有效的命令
var Varrick = Varrick + Zhuli.
所以...
Varrick(); // Alerts "Do the thing!" then alerts "Did the thing."
注意:我想在不依赖 jQuery 的情况下做到这一点。
解决方案
这就是为什么分配给on-
属性通常不是一个好主意的原因之一 - 如果该属性上以前存在任何内容,它将被覆盖,因此只有最新的处理程序会触发。(并且不要试图相互+=
发挥作用)
尝试添加DOMContentLoaded
侦听器:
function foo() {
console.log('foo');
}
function bar() {
console.log('bar');
}
document.addEventListener("DOMContentLoaded", foo);
document.addEventListener("DOMContentLoaded", bar);
如何向函数变量添加附加函数?
如果您必须只有一个侦听器,则只需在侦听器中调用这两个函数:
document.addEventListener("DOMContentLoaded", () => {
foo();
bar();
});
这就像
window.onload = function(){
foo();
bar();
};
(但是,通常更好用addEventListener
)
推荐阅读
- ios - Mapbox 在选择 pin i IOS 时更改 MGLAnnotation 图像
- javascript - 如何使用多个 Parse 实例
- gitlab - 获取扩展关键字以在本地 gitlabci 运行器中工作
- c# - 已安装 64 位 Oracle 客户端,但 c# 异常提示“已安装 32 位 Oracle 客户端组件”。
- javascript - 在 Angular 7 中导航而不向 URL 添加参数
- javascript - 使用 javascript(任务管理器应用程序)保存/加载数据
- pyspark - 纯 python 脚本(不是 pyspark)可以在 Azure Databricks 的群集中并行运行吗?
- php - 在 Woocommerce 中添加费用之前检查应用的优惠券
- ruby-on-rails - Rspec测试CanCan AbilityClass不在Rails3.2中建立规则
- mongodb - 如何通过使用 loopback3 评分对 mongodb 数据进行排序?