- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
所以,我在主页上有这样的 jQuery 页面预加载器:
<script type="text/javascript">
$(window).load(function() {
$("#preloader").delay(700).fadeOut("slow");
})
<div id="preloader" class="preloader"></div>
这显示了 4 次:
div
类,以便在我通过 JS 单击 Logo 或菜单项时不在整个页面上显示预加载器图像。并使用了这个:document.getElementById("preloader").className = 'test';
但是后来...我意识到通过单击菜单项再次加载主页,我创建了文档的新副本,所以我的预加载器再次拥有他的类并出现了。所以,我决定使用 AJAX,而不是通过单击菜单项或 Logo 来重新加载整个页面。现在我用这个:
<script type="text/javascript">
$(document).ready(function(){
$("#blog, #logo").click(function(){
$("#container").load("/blog");
document.getElementById("preloader").className = 'test';
});
});
</script>
因此,当我单击 Logo 或菜单项时,我会在容器中加载名为 «blog» 的类别。我的侧边栏看起来像这样:
...
<a href="javascript:;" id="logo"><i class="logo"></i></a>
...
<li class="m_blog"><a id="blog" href="javascript:;"><i class="icon"></i>Blog</a></li>
...
所以,它有效!预加载器仅在您通过域名打开网站时出现。但是出现了1个问题。当我打开“视频”类别时,我有这样的地址:mysite.com/video/
当我通过 Logo 或菜单返回主页时,我有相同的地址!因为内容加载没有重新加载整个页面和地址不会改变。我该如何解决?请帮帮我!我只想显示我的预加载器一次:当我通过域名或按 F5 刷新主页时。我已经头晕了,因为我只会HTML和CSS,但是今天开始学习AJAX和jQuery。帮我解决这个问题。
最佳答案
所以,我已经自己解决了问题。但是,无论如何,感谢@prabeen-giri 帮助我以正确的方式思考。首先,我需要解释一下预加载器机制。看看 CSS:
position: fixed;
display: block;
top: 0; /* making preloader cover all screen */
right: 0;
left: 0;
bottom: 0;
background-repeat: no-repeat;
background-position:center; center;
background-size: auto auto;
background-image: url(../images/preload.png); /* your picture should be here */
background-color:#000;
z-index:99; /* must be the highest number of all others to cover them all */
因此,您的预加载器只是一张图片或其他覆盖所有窗口并在加载全部内容时平滑消失(通过 jQuery)的东西。
<div id="preloader" class="preloader"></div>
这是脚本:
<script type="text/javascript">
$(window).load(function() {
$("#preloader").delay(700).fadeOut("slow");});
</script>
为了解决我的问题并在通过域名进入站点时仅显示一次预加载器,我们需要使用 cookie。有 2 个 cookie 辅助函数(来自 Quirksmode ):
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
所以,我们需要输入自己的cookie来为运行脚本创造条件。最初我们创建的 cookie 等于 null 并且这种相等性将成为运行脚本的条件。之后我们设置 cookie 一些值以不再启动 jQuery。这是代码:
<script type="text/javascript">
$(window).load(function() {
if (readCookie('referer') == null){
$("#preloader").delay(700).fadeOut("slow");}
createCookie('referer',1,0);
});
</script>
但是刷新页面后如何去掉我们的preloader图片和背景呢?因为我们只是根据条件禁用了 jQuery fadeOut 过程。图片和黑色背景一直覆盖着我们的窗口,不会消失...
让我们创建新条件并将其放入
<script>
if (readCookie('referer') == null) {
document.write("<style>.preloader {background-image: url(../images/preload.png); background-color:#000; z-index:99;}</style>");
}
</script>
由此,我们将图像、z-index 和背景设置为预加载器类。仅当用户通过域名或清除他的 cookie 并刷新页面(这似乎不太可能)时,我们的 cookie 才等于null。如果 cookie 等于 1,正如我们上面设置的那样,我们的预加载器将显示但没有图片和背景,我们的 jQuery fadeOut 也不会运行!所以,我的问题如我所愿地解决了,预加载器只会出现一次。再次感谢@prabeen-giri!
关于javascript - 如何在通过域名进入时只显示一次页面预加载器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15935900/
我之前让 dll 注入(inject)器变得简单,但我有 Windows 7,我用 C# 和 C++ 做了它,它工作得很好!但是现在当我在 Windows 8 中尝试相同的代码时,它似乎没有以正确的方
我正在尝试制作一个名为 core-splitter 的元素,该元素在 1.0 中已弃用,因为它在我们的项目中起着关键作用。 如果您不知道 core-splitter 的作用,我可以提供一个简短的描述。
我有几个不同的蜘蛛,想一次运行所有它们。基于 this和 this ,我可以在同一个进程中运行多个蜘蛛。但是,我不知道如何设计一个信号系统来在所有蜘蛛都完成后停止 react 器。 我试过了: cra
有没有办法在达到特定条件时停止扭曲 react 器。例如,如果一个变量被设置为某个值,那么 react 器应该停止吗? 最佳答案 理想情况下,您不会将变量设置为一个值并停止 react 器,而是调用
https://code.angularjs.org/1.0.0rc9/angular-1.0.0rc9.js 上面的链接定义了外部js文件,我不知道Angular-1.0.0rc9.js的注入(in
我正在尝试运行一个函数并将服务注入(inject)其中。我认为这可以使用 $injector 轻松完成.所以我尝试了以下(简化示例): angular.injector().invoke( [ "$q
在 google Guice 中,我可以使用函数 createInjector 创建基于多个模块的注入(inject)器。 因为我使用 GWT.create 在 GoogleGin 中实例化注入(in
我在 ASP.NET Core 1.1 解决方案中使用配置绑定(bind)。基本上,我在“ConfigureServices Startup”部分中有一些用于绑定(bind)的简单代码,如下所示: s
我在 Spring MVC 中设置 initBinder 时遇到一些问题。我有一个 ModelAttribute,它有一个有时会显示的字段。 public class Model { privat
我正在尝试通过jquery post发布knockoutjs View 模型 var $form = $('#barcodeTemplate form'); var data = ko.toJS(vm
如何为包含多态对象集合的复杂模型编写自定义模型绑定(bind)程序? 我有下一个模型结构: public class CustomAttributeValueViewModel { publi
您好,我正在尝试实现我在 this article 中找到的扩展方法对于简单的注入(inject)器,因为它不支持开箱即用的特定构造函数的注册。 根据这篇文章,我需要用一个假的委托(delegate)
你好,我想自动注册我的依赖项。 我现在拥有的是: public interface IRepository where T : class public interface IFolderReposi
我正在使用 Jasmine 测试一些 Angular.js 代码。为此,我需要一个 Angular 注入(inject)器: var injector = angular.injector(['ng'
我正在使用 Matlab 代码生成器。不可能包含代码风格指南。这就是为什么我正在寻找一个工具来“ reshape ”、重命名和重新格式化生成的代码,根据我的: 功能横幅约定 文件横幅约定 命名约定 等
这个问题在这里已经有了答案: Where and why do I have to put the "template" and "typename" keywords? (8 个答案) 关闭 8
我开发了一种工具,可以更改某些程序的外观。为此,我需要在某些进程中注入(inject)一个 dll。 现在我基本上使用这个 approach .问题通常是人们无法注入(inject) dll,因为他们
我想使用 swing、spring 和 hibernate 编写一个 java 应用程序。 我想使用数据绑定(bind)器用 bean 的值填充 gui,并且我还希望它反射(reflect) gui
我有这段代码,当两个蜘蛛完成后,程序仍在运行。 #!C:\Python27\python.exe from twisted.internet import reactor from scrapy.cr
要点是 Spring Batch (v2) 测试框架具有带有 @Autowired 注释的 JobLauncherTestUtils.setJob。我们的测试套件有多个 Job 类提供者。因为这个类不
我是一名优秀的程序员,十分优秀!