在简单的场景中,DOMContentLoaded不像$(document).ready()那样工作

时间:2016-11-13 16:43:38

标签: javascript jquery angular webpack

在Angular2应用的webpack资产包的主文件中,我无法收听DOMContentLoaded事件。
该文件只有以下几行:

// styles
const bootstrapLoader = require('bootstrap-loader');
const styleScss       = require('./main.scss');
// scripts
const $               = require('jquery');
const jQueryUjs       = require('jquery-ujs');
const coreJS          = require('core-js');
const zoneJS          = require('zone.js');
const reflectMetadata = require('reflect-metadata');
const myAngularApp    = require('./main.ts');

document.addEventListener('DOMContentLoaded', function () {
  console.log('Hola!');
});

另一方面,如果我使用jQuery,它可以完美地工作,id est,用以下几行改变最后三行:

$(document).ready(function() {
  console.log('Hola!');
});

这看起来很基本,但我不明白为什么准备好的文件的普通javascript版本在这里不起作用...

非常感谢!

1 个答案:

答案 0 :(得分:3)

它不一样

https://api.jquery.com/ready/

  

大多数浏览器以DOMContentLoaded事件的形式提供类似的功能。但是,jQuery的.ready()方法以一种重要且有用的方式不同:如果DOM准备就绪并且浏览器在代码调用.ready(handler)之前触发DOMContentLoaded,则仍将执行函数处理程序。相反,从未执行事件触发后添加的DOMContentLoaded事件侦听器。