我目前正在为EPUB文件制作一个交互式HTML5小部件。我们通常使用jQuery来做这些事情。
如果我可以在EPUB清单中包含XML数据文件,然后使用标准的jQuery和AJAX方法从XML文件中读取我的小HTML5小部件,那么当前的项目会容易得多。
对于那些在EPUB文件中执行困难的Web应用程序,我已经完成了这一千次。
我的主要问题是:
1)这甚至可能吗?
2)在package.opf中声明数据XML文件时使用的媒体类型是什么?
我使用以下代码:
$.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中测试时,一切正常。
非常感谢任何帮助。
谢谢!
答案 0 :(得分:1)
人们不得不想知道使用像jQuery这样的大型库的重点在于EPUB,当jQuery的主要目的之一是跨浏览器兼容性时。我强烈建议使用标准的ECMA5 / XHTML5技术。
无论如何,当然你可以在EPUB中包含一个XML文件并阅读它。你有什么困难?显而易见的是检查路径。你确定它不应该是../data/text.xml
吗?对于媒体类型,在其他条件相同的情况下,只需使用text/xml
或application/xml
即可。
请注意,即使读取成功,某些读者可能会因未知原因返回值0。这可能会诱使jQuery报告错误。但是您应该能够访问底层XMLHttpRequest对象的responseText或responseXml字段。
我使用以下代码,它可以正常工作:
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;
};
}())
;