我正在将一个基于js的epub阅读器作为一个周末项目,并且试图将每本书页面上图像的src属性从图像url更改为从epub zip加载的数据URI。这是我的功能:

//page contents is just an html string of the book's page
pageContents = GlobalZipLoader.load('epub.zip://' + pageLocation);
pageContents = replaceImages(pageContents)

...

function replaceImages(pageContents){
  $(pageContents).find('img').each(function(){
    var domImage = $(this);

    //this is something like ".../Images/img.jpg"
    var imageLocation = domImage.attr('src');

    //this returns the proper data-uri representation of the image
    var dataUri = GlobalZipLoader.loadImage('epub.zip://' + imageLocation);

    //this doesn't seem to "stick"
    domImage.attr('src', dataUri);
  });
  return pageContents;
}


从replaceImages函数返回的pageContents仍然具有旧的src属性。如果需要,我可以提供更多详细信息,但我们将不胜感激。

正确答案归功于The System Restart和Ilia G:

function replaceImages(pageContents) {
    newContent = $(pageContent);
    ... manip ...
    return newContent;
}

最佳答案

图像加载完成后,您应该尝试更改图像src

我认为这是在loadImage函数中发生的。

根据您的更新问题:

我认为您不需要任何clone()。只需将pageContents存储在tempContents变量中并使用该变量

09-19 09:26