페이지가 HTML5-jQuery입니다. 모바일 사파리와 Chrome에서 잘 작동합니다. 그러나 전체 화면으로 열면 정말 이상하게 작동합니다. 웹 서비스를 통해 업데이트 된 텍스트를 보내고 성공/실패 응답을받는 '저장'링크 (#updateLink)가 있습니다. 일단 응답을 받으면 앱이 갑자기 닫힙니다. 이것은 전체 화면 모드에서만 발생합니다.Angular JS - iOS 8 - iPad Air : 전체 화면 응용 프로그램이 닫힙니다.
HTML :
<div id="footerAnnouncementsDiv" class="footerAnnouncementsDiv">
<a href id="updateLink" class="saveLink">Save</a>
<a href id="cancelLink" class="cancelLink">Cancel</a>
<a href id="createLink" class="saveLink" style="float:left">Create New Announcement</a>
</div>
JS :
$("#updateLink").on("click", function (e) {
e.preventDefault();
if (mode == "edit") {
//This one
updateAnnouncementsData();
}
else if (mode == "create") {
//Ignore this one
createNewAnnouncement();
}
mode = "edit";
});
//Function to retrieve entire result set from backend
function getAnnouncementsData() {
$.ajax({
url: webServiceURL + "getAllAnnouncements",
beforeSend: function (request) {
request.setRequestHeader("Authorization", user.slsPlnrId + '~' + user.role + '~' + user.authId + '~' + AC);
},
type: "POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ "sls_plnr_id": user.slsPlnrId,"role": user.role }),
async: false,
timeout: 30000,
success: function (result, status, xhr) {
if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {
$("#announcementsListDiv").empty();
var x = $(result.announcements).sort("anncmt_dt", "desc");
$.each(x, function (iterator, item) {
var datestr = item.anncmt_dt.split(/[-T.]/);
var dateObj = new Date(datestr.slice(0, 3).join('/') + ' ' + datestr[3]);
var day = dateObj.getDate().toString();
var month = monthNames[dateObj.getMonth()].toString();
var constructor = '<div class="announcementItem" id="' + item.anncmt_id + '">';
constructor += '<div class="dateStampDiv"><span class="dayLabel">' + day + '</span></br><span class="monthLabel">' + month + '</span></div>';
constructor += '<div style="display: none" id="' + item.anncmt_id + 'date">' + item.anncmt_dt + '</div>';
constructor += '<div class="shortAnnouncementDiv">';
constructor += '<div class="shortHeaderDiv" id="' + item.anncmt_id + 'header">' + item.anncmt_sbj + '</div>';
if (item.anncmt_desc.length > 90) {
constructor += '<div class="shortDescDiv">' + item.anncmt_desc.substring(0, 90).trim() + '...' + '</div>';
}
else {
constructor += '<div class="shortDescDiv">' + item.anncmt_desc + '</div>';
}
constructor += '<div style="display: none" id="' + item.anncmt_id + 'description">' + item.anncmt_desc.trim() + '</div>';
constructor += '</div><a href="#" id="a' + item.anncmt_id + '" class="deleteAnnouncement" />';
constructor += '</div>';
$("#announcementsListDiv").append(constructor);
});
$("#announcementsListDiv").append('<div style="clear:both"></div>');
if (x.length == 0) {
mode = "create";
}
//$(".announcementItem").first().trigger("click");
}
},
error: function (xhr, status, error) {
alert("An error occured while processing your request");
}
});
}
//Function to update record at backend
function updateAnnouncementsData() {
var jsonObj = {};
jsonObj.sls_plnr_id = user.slsPlnrId;
jsonObj.role = user.role;
jsonObj.unread_count = "";
jsonObj.announcements = [];
var announcement = {};
var idVal = $(".selectedDivBorder").attr("id");
announcement.anncmt_id = idVal;
if ($("#announcementDisplayHeaderDiv").children().length == 0) {
announcement.anncmt_sbj = $("#announcementDisplayHeaderDiv").text();
}
else {
announcement.anncmt_sbj = $("#announcementDisplayHeaderDiv > form > input").val();
}
if ($("#announcementDisplayDescDiv").children().length == 0) {
announcement.anncmt_desc = $("#announcementDisplayDescDiv").text();
}
else {
announcement.anncmt_desc = $("#announcementDisplayDescDiv > form > textarea").val();
}
if (announcement.anncmt_sbj.trim() == "" || announcement.anncmt_desc.trim() == "") {
alert("Announcement Subject or Description cannot be left blank");
return;
}
var dt = new Date();
announcement.anncmt_dt = dt.getFullYear() + "-" + dt.getMonth() + "-" + dt.getDate();
announcement.anncmt_read_ind = "";
jsonObj.announcements.push(announcement);
$.ajax({
url: webServiceURL + "updateAnnouncements",
beforeSend: function (request) {
request.setRequestHeader("Authorization", user.slsPlnrId + '~' + user.role + '~' + user.authId + '~' + AC);
},
type: "POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(jsonObj),
async: false,
success: function (result, status, xhr) {
if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {
if (result.status == "success") {
alert(result.message);
getAnnouncementsData();
//$("#" + idVal).trigger("click");
$("#createLink").css("display", "initial");
}else{
alert(result.message);
}
}
},
error: function (xhr, status, error) {
alert("An error occured while processing your request");
$(".announcementItem").first().trigger("click");
}
});
}
는 아마 (새 탭에서 열 수) 외부 URL을 가리키는 링크에 의해 발생하는 것으로 문제를 진단했지만, 그 수정 프로그램이 작동하지 않습니다. 전체 화면 앱이 닫히면 모바일 Safari에서 링크가 열리지 않기 때문에 그런 경우는 아닙니다. 이것은 정말 중요하고 해결책을 빨리 찾아야합니다! SOlutions 크게 주시면 감사하겠습니다!