2011-12-29 53 views
1

当你去到一个特定的URL那里的初始内容被加载,然后它解释的url参数,然后内容改变。隐藏/显示内容时jQuery无意的延迟

在我的本地机器上发生这种“l split分裂”,又如此之快,你看不到任何延迟。但是,如果您在大约5秒后转到该URL,内容将最终隐藏并显示正确的内容。 js在下面,这里有一个非常接近的html代码片段。

例如URL:www.example.com/page1.aspx?nav=2012?id=113 & PID = 2

HTML

<div id="default">content</div> 
    <div id="mobile2012" style="display:none;">content</div> 

的Javascript

var querystring = location.search.replace('?', '').split('?'); 
var queryObj = {}; 
for (var i = 0; i < querystring.length; i++) { 
    var name = querystring[i].split('=')[0]; 
    var value = querystring[i].split('=')[1]; 

    queryObj[name] = value; 
} 
//////// 
var subNavDestination = queryObj["nav"]; 
//////// 
urlParams(subNavDestination); 
function urlParams(subNavDestination) { 
    var displayInformation; 

    switch (subNavDestination) { 
     case 'about': displayInformation = "AboutEarthquakeIns"; 
      break; 
     case 'homeowner': displayInformation = "Homeowner2012Content"; 
      break; 
     case 'renter': displayInformation = "Renter2012Content"; 
      break; 
     case 'mobilehome': displayInformation = "Mobilehome2012Content"; 
      break; 
     case 'condo': displayInformation = "Condominium2012Content"; 
      break; 
     case '2011': displayInformation = "pdf2011"; 
      break; 
     case '2012': displayInformation = "pdf2012"; 
      break; 
     default: displayInformation = "GeneralContent"; 
    } 

    if (displayInformation != "AboutEarthquakeIns") { 
     //$('#PolicyTypes2012 .sideNavPolicyType').slideToggle(); 
     $('#PolicyTypes2011 .sideNavCoverage').slideUp(); 
    } 

    if (displayInformation == "pdf2011") { 
     controlContentVisibility("pdf2011"); 
     $('#PolicyTypes2011 .sideNavPolicyType').slideToggle(); 
     $('#PolicyTypes2011 .sideNavCoverage').slideUp(); 
     setActiveLink(); 
     setSelectedPolicyType(); 
     hideYearSubMenus(2012); 
    } 
    else if (displayInformation == "pdf2012") { 
     controlContentVisibility("pdf2012"); 
     $('#PolicyTypes2012 .sideNavPolicyType').slideToggle(); 
     $('#PolicyTypes2012 .sideNavCoverage').slideUp(); 
     setActiveLink(); 
     setSelectedPolicyType(); 
     hideYearSubMenus(2011); 
    } 

    controlContentVisibility(displayInformation); 
} 
+0

重新考虑你的结构。为什么要将所有这些数据提供给客户,然后隐藏大部分数据?效率低下,肯定会导致不良的用户体验。 – 2011-12-29 22:08:33

+0

此外,您的查询字符串语法不正确。应该永远不会超过一个问号。 – 2011-12-29 22:10:14

+0

有一个内容管理系统与我无法控制的查询字符串参数混淆,这就是为什么它有两个?至于为用户提供所有这些内容......这是90%的文字,我正在努力避免有多页废话。谢谢你的想法。 – BRogers 2011-12-29 22:27:29

回答

0

当你点击URL(我假设在远程站点)时,需要额外的时间来加载您将选择的div的内容显示在可以被解析/呈现之前。

+0

这实际上是与页面呈现,但我不认为这会是。 – BRogers 2011-12-29 22:14:48

+0

我禁用了所有显示的内容,并且只显示请求,并且仍然很慢。 – BRogers 2011-12-30 19:09:04

0

我的猜测是,你必须包含的JavaScript作为单独的脚本的一部分即.js文件而不是HTML文件,并耽误你看到的是时间采取浏览器下载该脚本

+0

即使它是内联的,我仍然有相同的问题。 – BRogers 2011-12-29 23:39:17

+0

它似乎知道该怎么做,只是等待所有内容在切换出内容之前在aspx页面中加载了所有内容。与此相关的难点在于默认内容是首先加载的内容之一。我通过删除一个额外的包含文件将时间减少到了一半。 – BRogers 2011-12-29 23:39:44