我在项目中使用JQuery 1.3.2-min来处理JavaScript动画,ajax等。我将该文件存储在与网站相同的服务器上,而不是使用Google。当我在我的开发机器上本地运行网站时,在FF,IE,Opera和Safari(所有最新版本 - 我在家工作,我只有一台机器供个人使用和开发使用)中一切正常,除了一些CSS他们之间的差异,当我去我的机器上的现场,它也可以正常工作。我清除了缓存并且很难刷新页面,并且仍然有效。JQuery/Javascript的作品开启和关闭
然而,这是令人感兴趣的地方。当我把这个站点发送给我的老板去测试各种操作系统/浏览器配置时,一个页面无法正常工作,其中一些工作正常,一些则不正常。此外,客户(使用IE 8)也确认它不完全工作 - 事实上,他告诉我,该页面可以正常工作一个小时,然后“关闭”一段时间。我以前从来没有听说过这类事情,谷歌也没有变得太多。我有一种预感,它可能部分与JQuery的.data(),但我不知道。
该页面基本上是嵌套无序列表,并且三个基本操作发生在列表上。 最上面的无序列表被设置为可见(所有通过css的列表被设置为显示:无以使它们隐藏在新的页面请求上);所有列表项目div都会在mouseon上获得完全不透明的悬停动作,并在mouseoff上消失50%的不透明度;然后在单击段落时,将显示该列表项中最顶端的无序列表。
下面是页面我的JavaScript文件:
$(function() {
// Set first level ul visible
$('div#pageListing ul:first').css('display', 'block');
// Disable all the hyperlinks in the list
$('div#pageListing li a').click(function() {
var obj;
obj = $(this).parent(0).parent('div:first');
highlight(obj);
return false;
});
// List Item mouse hovering
$('#pageListing li').hover(
// Mouse On
function() {
if ($(this).children('div').attr('id') !== 'activePage') {
$(this).children('div').css('opacity', 1).css('filter',
'alpha(opacity=100)');
}
}, // Mouse off
function() {
if ($(this).children('div').attr('id') !== 'activePage') {
$(this).children('div').css('opacity', 0.4).css('filter',
'alpha(opacity=40)');
}
});
// Active list item highlighting
$('#pageListing li div').click(function() {
highlight($(this));
});
// Sub-list expanding/collapsing
$('#pageListing p.subpageslink').click(function() {
// Get next list
var subTree = $(this).parent('div').next('ul');
// If list is currently active, close it, else open it.
if (subTree.data('active') != true) {
subTree.data('active', true);
subTree.show(400);
} else {
subTree.data('active', false);
subTree.hide(400);
}
});
// Double clicking of list item - edit a page
$('#pageListing li div').dblclick(function() {
var classes = $(this).attr('class');
var classArray = classes.split(' ');
var pageID = classArray[1];
editPage(pageID);
});
// Handle button clicking
$('button#addPage').click(function() {
addPage();
});
$('button#editPage').click(function() {
var div = $('div#activePage');
var classes = div.attr('class');
var classArray = classes.split(' ');
var pageID = classArray[1];
editPage(pageID);
});
$('button#delPage').click(function() {
var div = $('div#activePage')
var classes = div.attr('class');
var classArray = classes.split(' ');
var pageID = classArray[1];
delPage(pageID);
});
});
// Highlighting of page when clicked
function highlight(obj) {
// Get previous hightlighted element
// and un-highlight
var oldElement = $('div#activePage');
oldElement.css('background', 'white');
oldElement.css('opacity', 0.4).css('filter', 'alpha(opacity=40)');
oldElement.removeAttr('id');
// highlight current selection
obj.attr('id', 'activePage');
obj.css('opacity', 1).css('filter', 'alpha(opacity=100)');
obj.css('background', '#9dc0f4');
// add appropiate action buttons
$('button.pageButton').css('display', 'inline');
}
function addPage() {
window.location = "index.php?rt=cms/editPage";
}
function delPage(page) {
var confirm = window.confirm("Are you sure? Any sub-pages WILL BE deleted also.");
if (confirm) {
var url = './components/cms/controller/forms/deletePage.php';
$.ajax({
url : url,
type : 'GET',
data : 'id=' + page,
success : function(result) {
if (!result) {
document.location = "index.php?rt=cms";
} else {
window.alert('There was a problem deleting the page');
}
}
});
}
}
function editPage(page) {
var url = "index.php?rt=cms/editPage/" + page;
window.location = url;
}
与你的问题没有关系,但是我觉得你的删除页面使用GET请求是令人担忧的。这不仅是一种不好的做法,它实际上违反了HTTP规范(http://www.w3.org/2001/tag/doc/whenToUseGet.html),我虚心地要求你仅将它切换到POST;) – 2009-06-24 17:46:32
同意彼得B.,这很糟糕,因为它太容易无意中导航到一个URL并导致后端潜在的灾难性变化,HTTP POST阻止了这一点。 – Peter 2009-06-24 17:52:36