javascript - ASP.NET MVC 和 Angular 4 mini SPA - 页脚问题

标签 javascript css asp.net-mvc angular

应用程序背景:我的应用程序是使用 ASP .net MVC (.net Framework 4.6) 和多个 Angular 4 mini SPA 构建的

迷你 SPA 是从其中一个 View 加载的,例如 Subscription.cshtml。请注意下面代码中我的评论:

@section styles{
    <link href="~/apps/userSubscription/styles.e8e9c3a3817e92de1e39.bundle.css" rel="stylesheet" />
}
@*This is mini SPA*@
<sb-subcription-app-root>
    @*This is loader to show while mini SPA is bootstrapped*@
    <div class="loading-icon">
        <div class="text-center">
            <i class="fa fa-spinner fa-spin fa-fw" style="font-size:55px;"></i>
        </div>
    </div>
</sb-subcription-app-root>

@section scripts{
    <script src="~/apps/userSubscription/inline.4306fb1489008775a724.bundle.js"></script>
    <script src="~/apps/userSubscription/polyfills.b92561b85131ad96e15f.bundle.js"></script>
    <script src="~/apps/userSubscription/vendor.d7d84c623190e8bb1494.bundle.js"></script>
    <script src="~/apps/userSubscription/main.c9d275f7937435642d76.bundle.js"></script>
}

问题:页脚被推到顶部。我的页脚位于 _Layout.cshtml 中:

<footer class="footer">
    <div class="top-footer">
        <div class="container">
        </div>
    </div>
</footer>

问题描述:

  1. 加载 View Subscription.cshtml 时。 UI 如下图所示。我相信此时我的 Angular 应用程序正在启动 enter image description here

  2. 启动 Angular 应用程序后,加载程序消失(我认为这是正确的),然后页脚被推到顶部 2-3 秒,直到 DOM 加载完毕,如图所示

enter image description here

我需要什么:我想隐藏页脚,直到加载 DOM(包括 Angular Mini SPA)。任何 CSS 和 JS 解决方案都适合我。

最佳答案

作为解决方法,您可以尝试以下方法。

1) 默认隐藏页脚:

<footer class="footer hide" id="footer">

2) 标记在显示页脚之前必须渲染的元素:

<div id="bootstraper">

3) 运行 javascript 轮询过程来切换页脚可见性:

(function() {
  var timer = setInterval(function() {    
     if(document.getElementById('bootstraper')) {
       clearInterval(timer);
       document.getElementById('footer').classList.remove("hide");
     }
  }, 40);
})();

如您所见,我们只是在某些(需要的)元素被渲染并可以通过 document 访问后显示页脚。这个解决方案有点老套,我建议您寻找一种更适合您的情况和环境的方法。这需要更深入的研究:

  • 谁加载了晚了 2-3 秒的 DOM?
  • 如果这是 Angular 应用的责任,则该应用必须处理此过程;
  • 这个过程可能不仅仅是一个原始的轮询,例如延迟实体本身可能会告诉它已经完成......
  • 也许 DOMContentLoaded事件就足够了吗? (仅在触发时显示页脚)

关于javascript - ASP.NET MVC 和 Angular 4 mini SPA - 页脚问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47568110/

相关文章:

html - 如何在此菜单中添加粗体?

html - 仅适用于 Aspnet CSS 和脚本的响应式 NavBar 下拉菜单

ASP.NET MVC RC 为 Url.Content 返回错误的路径

c# - 模型/实体与复杂类型

javascript - 如何从 JavaScript 中的 ISO 8601 时间格式获取时间?

javascript - 使用文件 ://protocol? 时,我能否让 history.back() 函数在 Chrome 中工作

css - 响应图像 srcset 忽略 div 宽度以在 Firefox 中显示比必要的更大的图像

javascript - 将 HTML 提交到服务器时如何保持换行符和缩进?

javascript - 检索下拉列表中所选元素的值 - ReactJS

javascript - 使用 document.write 加载不同的 css 样式表时,浏览器无限刷新