Ahs*_*lii 2 html javascript web reactjs
我花了 5 个小时的时间才解决这个问题,我在文件夹中的文件<script>
中添加了一些标签。我希望它们在浏览器完全渲染 HTML 后执行,我知道这是一个非常基本的问题,但问题是,我正在将 HTML 模板转换为 React,并且它大量使用动画,这是我无法承受的从头开始再次写入react。这是我的代码index.html
public
<!DOCTYPE html>
<html lang="en">
<head>
<title>Galaxy App</title>
<!--CSS-->
<link href="asset/css/icofont.min.css" rel="stylesheet" />
<link href="asset/css/linearicons.min.css" rel="stylesheet" />
<link href="asset/css/magnific-popup.min.css" rel="stylesheet" />
<link href="asset/css/animsition.min.css" rel="stylesheet" />
<link href="asset/css/bootstrap.min.css" rel="stylesheet" />
<link href="asset/css/swiper.min.css" rel="stylesheet" />
<link href="asset/css/styles.css" rel="stylesheet" />
<link href="asset/css/main.css" rel="stylesheet" />
<link href="asset/css/homepage.css" rel="stylesheet" />
<!--Theme CSS-->
<link href="asset/css/theme.css" rel="stylesheet" />
<link href="asset/css/responsive.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
</head>
<body>
<div id="root"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick.js"></script>
<script src="asset/js/polyfill.min.js"></script>
<script src="asset/js/jquery.min.js"></script>
<script src="asset/js/jquery.viewport.min.js"></script>
<script src="asset/js/jQuerySimpleCounter.min.js"></script>
<script src="asset/js/jquery.magnific-popup.min.js"></script>
<script src="asset/js/animsition.min.js"></script>
<script src="asset/js/isotope.pkgd.min.js"></script>
<script src="asset/js/bootstrap.bundle.min.js"></script>
<script src="asset/js/rellax.min.js"></script>
<script src="asset/js/swiper.min.js"></script>
<script src="asset/js/smoothscroll.js"></script>
<script src="asset/js/svg4everybody.legacy.min.js"></script>
<script src="asset/js/TweenMax.min.js"></script>
<script src="asset/js/TimelineLite.min.js"></script>
<script src="asset/js/typed.min.js"></script>
<script src="asset/js/vivus.min.js"></script>
<script src="asset/js/main.js"></script>
<!-- Theme JS -->
<script src="asset/js/theme.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick.js"></script>
<script src="asset/js/cutsom.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我通过在最后一个脚本中记录来手动检查document.getElementById()
,它返回 undefined/null ,因为当时 HTML 尚未完全呈现,即使我已将脚本放在文件末尾。如果我添加setTimeout
到我的脚本中,它就会起作用,并且它可以完美地捕获元素。
那么我应该怎么做才能在我的 HTML 完全渲染后才加载所有脚本。
实现此目的的一种方法是从 React 发出事件。
将其添加到您的主要反应组件中:
useEffect(() => {
const event = new Event('rendered')
document.dispatchEvent(event)
}, [])
Run Code Online (Sandbox Code Playgroud)
监听页面上的事件:
<script>
document.addEventListener('rendered', function() {
// start animation
}, false)
</script>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1190 次 |
最近记录: |