【发布时间】:2015-09-27 22:20:15
【问题描述】:
我有一个问题,当我按下导航栏或链接时,我使用 .load() 将我的 php 页面加载到 div 中。但是我意识到,现在多次按下链接和导航栏后,“XHR 完成加载”呈指数增长,并且似乎同一个 php 文件被多次调用。
我将部分 javascript 代码放入名为 general.js 的通用 javascript 文件中,该文件也插入到所有其他 php 文件中,因为如果我不插入需要部分 javascript 代码的 php 文件中,它会不运行
此代码的一部分将 php 文件加载到 div 中。每当任何导航栏变为点击时,它都会加载 php 内容,但是加载请求会多次加载文件,并且随着点击次数的增加而增加。
$(".uk-navbar-nav").click(function(){
if($("#subnav_1").hasClass("uk-active")){
$("#welcome_tab").load("z_admin_welcome/welcome_admin.php");
console.log("nav1");
}
else if($("#subnav_2").hasClass("uk-active")){
$("#message_tab").load("z_admin/message_admin.php");
console.log("nav2");
}
else if($("#subnav_3").hasClass("uk-active")){
$("#Face_tab").load("z_admin_face/face_admin.php");
console.log("nav3");
}
else if($("#subnav_4").hasClass("uk-active")){
$("#QR_tab").load("z_admin/QR_admin.php");
console.log("nav4");
}
});
这是加载到 div 中的示例文件 (welcome_admin.php)
<!DOCTYPE html>
<html>
<head>
<!-- css styling is only on admin.php -->
<!-- br break new line -->
<script type="text/javascript" src="js/general.js"></script>
<script type="text/javascript" src="uikit/js/uikit.min.js"></script> <!-- insert this as failing to do so cause it not to work -->
</head>
<body>
<h3> Status </h3>
<hr>
<div class="uk-margin">
<div data-uk-button-radio data-uk-switcher="{connect: '#radio_status'}" id="welcome_radio_but">
<button class="uk-button uk-width-1-10 radio_welcome" id="radio_but_1">Available</button>
<button class="uk-button uk-width-1-10 radio_welcome" id="radio_but_2">Away</button>
<button class="uk-button uk-width-1-10 radio_welcome" id="radio_but_3">Busy</button>
</div>
</div>
<ul id="radio_status" class="uk-switcher uk-margin">
<li class="uk-active uk-panel-box uk-width-1-3" aria-hidden="false" id="radio_display_1">Please knock before entering</li>
<li aria-hidden="true" class="uk-panel-box uk-width-1-3" id="radio_display_2"></li>
<li aria-hidden="true" class="uk-panel-box uk-width-1-3" id="radio_display_3">Do Not Disturb,please email me</li>
</ul>
</body>
</html>
这是我的问题的屏幕截图,其中 XHR 被多次调用并完成加载同一个文件。
所以总的来说,问题在于 php 文件被多次调用并最终减慢/崩溃浏览器。
想知道:
- 是否应该停止将一个通用 javascript 附加到我将加载到的所有外部 php 文件中? (拆分函数并保存到多个不同的js文件?)
-
还有其他解决方案吗?
感谢您的任何帮助/建议
更新 1:
.uk-navbar-nav所在的位置,这是主页
<!DOCTYPE html>
<html>
<head> <!--inseart script here -->
<title></title>
<link rel="stylesheet" text="text/css" href="uikit/css/uikit.gradient.min.css">
<link rel="stylesheet" text="text/css" href="uikit/css/components/sticky.gradient.min.css">
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="uikit/js/uikit.min.js"></script>
<script type="text/javascript" src="js/general.js"></script>
<script type="text/javascript" src="uikit/js/components/sticky.min.js"></script>
</head>
<body onload="body_load()">
<div class="uk-container uk-container-center uk-margin-top"> <!--top center margin overall -->
<h1 class="uk-heading-large uk-panel-title uk-panel-box uk-icon-rebel"> This is the Main Page </h1>
<!-- simpler header line stop here -->
<div data-uk-sticky="{animation: uk-animation-slide-top}">
<nav class="uk-navbar">
<!-- Navigation tab bars -->
<ul class="uk-navbar-nav" data-uk-switcher="{connect:'#subnav-pill-content-1'}">
<li class="uk-active" id="subnav_1" aria-expanded="true"><a href="#"><i class="uk-icon-medium uk-icon-home"></i> Welcome</a></li>
<li aria-expanded="false" id="subnav_2" class=""><a href="#"><i class="uk-icon-medium uk-icon-envelope"></i> Message</a></li>
<li aria-expanded="false" id="subnav_3" class=""><a href="#"><i class="uk-icon-medium uk-icon-camera"></i> Facial Recognition</a></li>
<li aria-expanded="false" id="subnav_4" class=""><a href="#"><i class="uk-icon-medium uk-icon-qrcode"></i> QR Code</a></li>
<li aria-expanded="false" id="subnav_5" class=""><a href="#"><i class="uk-icon-medium uk-icon-gears"></i> Settings</a></li>
</ul>
</nav>
</div>
<ul id="subnav-pill-content-1" class="uk-switcher">
<!--welcome page -->
<li class="uk-active" aria-hidden="false" id="welcome_tab" value=""></li>
<!--Message -->
<li aria-hidden="true" id="message_tab" class=""></li>
<!--Facial Recognition -->
<li aria-hidden="true" id="Face_tab" class=""></li>
<!--QR Code -->
<li aria-hidden="true" id="QR_tab" class=""></li>
<!--Settings Code -->
<li aria-hidden="true" id="settings_tab" class=""></li>
</ul>
<!-- end of navigation tab bar -->
</div>
</body>
</html>
【问题讨论】:
-
您应该向我们展示放置
.uk-navbar-nav的HTML代码。 -
很可能您正在重新加载相同的脚本并在每次加载时添加新的事件处理程序......导致越来越多的请求
标签: javascript php jquery html performance