Mungkinkah Menyertakan File XML Data di EPUB dan Membacanya dengan jQuery dan AJAX?

Saat ini saya sedang mengerjakan widget HTML5 interaktif untuk file EPUB. Kami biasanya menggunakan jQuery untuk melakukan hal-hal ini.

Proyek saat ini akan jauh lebih mudah jika saya dapat memasukkan file data XML dengan manifes EPUB dan kemudian widget HTML5 kecil saya membaca data dari file XML menggunakan metode standar jQuery dan AJAX.

Saya telah melakukan ini ribuan kali untuk aplikasi web yang mengalami kesulitan melakukannya di dalam file EPUB.

Pertanyaan utama saya adalah:

1) Apakah ini mungkin?

2) Jenis media apa yang tepat untuk digunakan saat mendeklarasikan file XML data di package.opf?

Saya menggunakan kode berikut:

$.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");
    }
);

Peringatan kesalahan terus muncul saat saya menguji di iBooks. Namun, semuanya berfungsi dengan baik saat saya mengujinya di Safari di desktop saya.

Bantuan apa pun sangat dihargai.

Terima kasih!


person Mark    schedule 05.01.2013    source sumber
comment
dan jawaban di sini memang menjawab pertanyaan Anda, atau tidak, dan Anda tidak menanggapi atau menerimanya karena...???   -  person    schedule 26.01.2013


Jawaban (1)


Kita pasti bertanya-tanya apa gunanya menggunakan perpustakaan besar seperti jQuery di dalam EPUB, padahal salah satu tujuan utama jQuery adalah kompatibilitas lintas-browser. Saya sangat menyarankan menggunakan teknik standar ECMA5/XHTML5.

Tentu saja, Anda dapat memasukkan file XML ke dalam EPUB dan membacanya. Kesulitan apa yang Anda alami? Yang jelas adalah memeriksa jalurnya. Apakah Anda yakin seharusnya bukan ../data/text.xml, misalnya? Untuk jenis media, semuanya sama, cukup gunakan text/xml atau application/xml.

Harap diperhatikan bahwa beberapa pembaca mungkin mengembalikan nilai 0, karena alasan yang tidak diketahui, meskipun pembacaan berhasil. Itu mungkin mengelabui jQuery agar melaporkan kesalahan. Namun Anda seharusnya dapat mengakses bidang responText atau responXml dari objek XMLHttpRequest yang mendasarinya.

Saya menggunakan kode berikut dan berfungsi dengan baik:

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
Maaf atas tanggapan yang sudah lama tertunda. Ya, ini juga berhasil untuk saya. Pasti ada sesuatu dalam implementasi jQuery ajax yang tidak disukai epub. Terima kasih! - person Mark; 24.02.2013