2010-12-16 188 views
1

在我的iPhone应用程序中,一个epub reader,基于方法here,我已经解析了epub,创建了UIWebviews,但是我有一个小问题。 epub中的图像大于iPhone屏幕的宽度(320像素)。有没有一种Javascript方法,我可以在UIWebview([view stringByEvaluatingJavaScriptFromString:SomeJavaScriptString])上调用并以手动方式删除这些图像,而无需手动更改epub?从UIWebview删除图像

更新:问题可能是源文件是一个XML文件,而不是HTML?

回答

4

你可能想是这样的:document.getElementById('id_of_your_image').style.visibility = 'hidden'

UPDATE 要隐藏文档中的所有图像,

for (i=0; i<document.getElementsByTagName("img").length; i++) { 
    document.getElementsByTagName("img")[i].style.visibility = 'hidden'; 
} 

应该做的伎俩。

+0

是的,但我不想知道图像的id,因为图像没有id的,正如我在OP中所说的,我不想手动编辑epub。有没有一种方法可以选择带有“img”标签的所有元素并隐藏这些元素? – 2010-12-16 17:35:44

+0

@Richard,看我的更新。 – 2010-12-16 18:17:26

+0

奇怪的是,这在iPhone safari的作品,但它没有正确注入我的应用程序....我可以让其他JS注入,但(警报(“你好世界!”)) – 2010-12-16 18:32:03

1
var images = Array.prototype.slice.call(document.getElementsByTagName('IMG'), 0); 
var imageCount = images.length; 
for (var i = 0; i < imageCount; i++) { 
    var image = images[i]; 
    image.parentNode.removeChild(image); 
} 
+0

当我注入这个JS,没有什么似乎发生在UIWebview ..视图被加载,但没有发生在屏幕上,这是'nil'的结果......我也可以验证这个JS代码工作:'' window.scrollTo(0,0);'。关于为什么你的代码没有被正确注入的任何想法? – 2010-12-16 17:47:27

+0

如果您执行前两行然后警告(imageCount),会发生什么情况; ? – Zeppomedio 2010-12-16 17:53:41

+0

它返回0.问题是,它的XML文件不是HTML(实际上是XHTML)? – 2010-12-16 17:57:45

1

如果你不图形或图像处理为什么不能在那里看到的细节是重要的

1)写一些CSS,设置上的320像素或640像素,这取决于图像的最大宽度方向....请参阅http://www.thecssninja.com/css/iphone-orientation-css了解如何针对不同的方向使用不同的CSS。

2)在任何其他样式或样式表链接之后,将该CSS插入到每个HTML文件中 - 在</body>可以工作之前添加的<style>元素内。

这样图像仍然可见,但不会延伸超过单个页面宽度。

下一步你可以用类似<a href='zoom://x'>其中x是图像文件名 - 然后在你的UIWebViewDelegate'shouldStartLoadWithRequest'函数中检查图像是否request.URL.scheme ==“zoom” - 如果它你是否可以在一个可缩放的容器中推送一个包含图像x的新视图,如iBooks。

+0

难道你不是指320px或480px? 640像素将用于iPhone 4,而不依赖于方向。虽然很好的答案,我真的很喜欢这个解决方案,给用户他们已经有的东西,我会牢记这一点! +1 – 2011-01-31 01:47:43