เป็นไปได้ที่จะรวมไฟล์ Data XML ใน EPUB และอ่านด้วย jQuery และ AJAX ได้หรือไม่

ขณะนี้ฉันกำลังสร้างวิดเจ็ต HTML5 แบบโต้ตอบสำหรับไฟล์ EPUB โดยทั่วไปเราใช้ jQuery เพื่อทำสิ่งเหล่านี้

โปรเจ็กต์ปัจจุบันจะง่ายกว่ามากหากฉันสามารถรวมไฟล์ข้อมูล XML ไว้ในรายการ EPUB จากนั้นให้วิดเจ็ต HTML5 เล็กๆ ของฉันอ่านข้อมูลจากไฟล์ XML โดยใช้วิธี jQuery และ AJAX มาตรฐาน

ฉันได้ทำสิ่งนี้มาแล้วนับพันครั้งสำหรับเว็บแอปพลิเคชัน เพียงแต่มีปัญหาในการดำเนินการภายในไฟล์ EPUB

คำถามหลักของฉันคือ:

1) สิ่งนี้เป็นไปได้หรือไม่?

2) ประเภทสื่อที่เหมาะสมที่จะใช้เมื่อประกาศไฟล์ data XML ใน package.opf คืออะไร?

ฉันใช้รหัสต่อไปนี้:

$.ajax({
    type: "GET",
    async: false,
    cache: false,
    url: "data/test.xml",
    dataType: "xml",
    error: function() {
        alert("ERROR: The table data could not be read...");
    },
    success: function(objFileContents) {
        alert("SUCCESS");
    }
);

การแจ้งเตือนข้อผิดพลาดยังคงแสดงอยู่เมื่อฉันทดสอบใน iBooks แต่ทุกอย่างทำงานได้ดีเมื่อฉันทดสอบใน Safari บนเดสก์ท็อป

ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก

ขอบคุณ!


person Mark    schedule 05.01.2013    source แหล่งที่มา
comment
และคำตอบที่นี่ก็ตอบคำถามของคุณแล้วหรือยัง และคุณไม่ตอบหรือยอมรับเพราะ...???   -  person    schedule 26.01.2013


คำตอบ (1)


เราต้องสงสัยว่าการใช้ไลบรารีขนาดใหญ่เช่น jQuery นั้นอยู่ใน EPUB อะไรในเมื่อหนึ่งในวัตถุประสงค์หลักของ jQuery คือความเข้ากันได้ข้ามเบราว์เซอร์ ฉันขอแนะนำอย่างยิ่งให้ใช้เทคนิค ECMA5/XHTML5 มาตรฐาน

อย่างไรก็ตาม แน่นอนคุณสามารถรวมไฟล์ XML ไว้ใน EPUB และอ่านได้ คุณกำลังประสบปัญหาอะไรบ้าง? สิ่งที่ชัดเจนคือการตรวจสอบเส้นทาง คุณแน่ใจหรือไม่ว่าไม่ควรเป็น ../data/text.xml เป็นต้น สำหรับประเภทสื่อ อย่างอื่นจะเท่ากัน เพียงใช้ text/xml หรือ application/xml

โปรดทราบว่าผู้อ่านบางรายอาจส่งคืนค่าเป็น 0 โดยไม่ทราบสาเหตุ แม้ว่าการอ่านจะสำเร็จก็ตาม นั่นอาจเป็นการหลอกให้ jQuery รายงานข้อผิดพลาด แต่คุณควรจะสามารถเข้าถึงฟิลด์ responseText หรือ responseXml ของอ็อบเจ็กต์ XMLHttpRequest พื้นฐานได้

ฉันใช้รหัสต่อไปนี้และใช้งานได้ดี:

read=(function(){
    var r=new XMLHttpRequest();
    return function(src){
        r.open('GET', src, false);
        r.send();
        if(r.status!=200 && r.status!=0){//E-books return 0 for some reason?
            //REPORT ERROR
            return null;
        }
        return r.responseText;
    };
}())
;
person Community    schedule 05.01.2013
comment
ขออภัยสำหรับการตอบกลับที่ค้างชำระเป็นเวลานาน ใช่ สิ่งนี้ใช้ได้กับฉันเช่นกัน มันคงจะเป็นอะไรในการใช้งาน jQuery ajax ที่ epub ไม่ชอบ ขอบคุณ! - person Mark; 24.02.2013