我在項目中使用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