以下代碼按照FireFox中的預期顯示,但在Internet Explorer(v8)中完全不顯示。IE JS兼容性 - 在FF中工作?
// getLimits init
Frog.API.get('users.getInfo',
{
'params': {'id': UWA.Environment.user.id, 'details':'groups' },
'onSuccess': AssignPoints.getLimit,
'onError': function(err) { alert(err); }
});
...
// work out the user's limit, and how many points they've spent this week
// use LEAP library if necessary
AssignPoints.getLimit = function(data) {
for (var i in data[0].groups) {
if (data[0].groups[i].name.indexOf("LEAP") != -1) {
AssignPoints.Limit = data[0].groups[i].name.substr(5,3);
}
}
/************** IT'S THIS LINE ONWARDS WHERE THE ALERTS SEEM TO BREAK IN IE */
if (AssignPoints.Limit == 0) {
AssignPoints.Specialist = true;
}
UWA.Data.getJson(AssignPoints.URL + "?cmd=getLimitsAndTotals&Giver_ID=" + AssignPoints.CurrentUser, AssignPoints.getPointsSpent);
}
AssignPoints.getPointsSpent = function(data) {
AssignPoints.SpentWeekly = data.SpentWeekly;
AssignPoints.SpentTotal = data.SpentTotal;
AssignPoints.displayLimitAndTotals();
}
// display data from getLimitAndTotals
AssignPoints.displayLimitAndTotals = function() {
var LimitsAndTotalsHTML = '<h2>Points Allocation</h2>';
if (AssignPoints.Specialist == false) {
LimitsAndTotalsHTML += '<ul><li>Weekly Limit: <strong>' + AssignPoints.Limit + '</strong></li>';
} else {
LimitsAndTotalsHTML += '<ul><li>Weekly Limit: <strong>Unlimited</strong></li>';
}
LimitsAndTotalsHTML += '<li>Spent this week: <strong style="color:#990000;">' + AssignPoints.SpentWeekly + '</strong></li>' +
'<li>Spent total: <strong>' + AssignPoints.SpentTotal + '</strong></li></ul>';
$('div#limits').html(LimitsAndTotalsHTML);
}
編輯:CSS & HTML 我不認爲這是一個CSS/HTML的問題,因爲我有這個腳本的前一版本(這是我決定重寫,因爲它是醜陋的代碼和一些奇怪的程序化和純粹的混搭)在IE中使用完全相同的HTML正確顯示CSS &。
#total_container
{ overflow: hidden; width: 870px; }
#groups
{ width: 250px; float: left; padding: 10px; }
#right_container
{ width: 580px; float: left; padding: 10px; }
span.check
{ font-size: 10px; color: #666; }
span.err
{ color: red; font-weight: 700; }
#limits, #search_div
{ width: 270px; float:left; padding: 0 10px; }
#groups li, #groups ul
{ list-style-type: none; background: none; margin: 0; padding: 0; }
#groups li a
{ background-color: #999; color: #eee; display: block; margin: 5px 0; border: #666; padding: 8px 2px 8px 10px; width: 243px; }
#groups li a:hover
{ background-color: #990000; }
HTML只是<div id="limits"></div>
和JS更新它。
//編輯
第二個編輯:提醒
我試圖把隨機警報到代碼。在IE中,在for (var i in data[0].groups)
循環中,警報工作。如果我在該循環之後的任意位置放置警報,則不管是否使用變量名稱或隨機字符串(如"test"
),都不會顯示警報。
在FF中,無論在哪個函數中放置,警報都能正常工作。
** //第二個編輯**
火狐,如預期運行
Internet Explorer中,b0rked
有誰知道什麼可能被打破IE?
在此先感謝。
我想這可能與html和css而不是javascript有關。你可以提供的HTML?也許是一個jsfiddle.net? – jackJoe
由於我正在使用的Frog API,JSFiddle將無法工作。我會用CSS更新原始文章,但是我已經獲得了原始版本的文件(我重新編寫了它,因爲它是可怕的代碼),它在IE中使用相同的HTML/CSS正確顯示。 – dunc
如果你保存呈現的HTML,它在IE8中顯示是否正確?另外,你是否得到任何js錯誤? – jackJoe