我想让网站页面平滑地滑动到另一个页面。所以我做了 $('a').click(); 检查链接是否为本地的函数,如果是,则获取链接href并将其加载到正文。
$('a').click(function(){
var href=$(this).attr('href');
$('body').load(href);
return false;
});
它看起来不错,但我的网站也包含很多 js 插件。执行它们需要一段时间,.load
action首先显示'unchanged by js'内容,然后执行js。它会导致内容的不良闪烁。
是否可以在 JS 的所有执行中缓存新内容,在完成之前不要更改旧正文,当所有 DOM 和 JS 对新内容完成时,slideOut 旧内容和 slideIn 新内容?
编辑:我认为重点不在于检测 js 执行,而在于检查是否加载了所有其他文件 - DOM 更改应该在新文件的 $(window).load 将被触发的同时被触发。
[编辑] - - - - - - - - - - - - - - - - - - - - - - - - ----------------------
我的解决方案是跨浏览器不透明度为 0 的 css 代码(总是在构建 dom 之前加载 css)。
.transparent{
-moz-opacity: 0.00;
opacity: 0.00;
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha"(Opacity=0);
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
filter:alpha(opacity=0);
}
它通常但并非总是防止内容的不良闪烁。现在它可以以某种方式检测到内容是由 jQuery ajax 加载的,并应用一些显示超时等等。但实际上问题仍然存在。
现在为这个问题做一个更简单的例子:
单击触发 .load('something.php') 函数的链接后,如何在 $('body').load('something.php') 3000 毫秒后开始更改 DOM?(点击后应立即开始加载,但必须稍后启动 DOM 更改)