Удалить изображения из UIWebview - PullRequest
1 голос
/ 16 декабря 2010

В моем приложении для iPhone, читатель epub, основанный на методе здесь , я проанализировал epub, создал UIWebviews, но у меня небольшая проблема. В epubs есть изображения, размер которых превышает ширину экрана iPhone (320 пикселей). Есть ли метод Javascript, который я могу вызвать в UIWebview ([view stringByEvaluatingJavaScriptFromString:SomeJavaScriptString]) и программно удалить эти изображения, не меняя epub вручную?

ОБНОВЛЕНИЕ: Может ли быть проблема в том, что исходный файл является XML-файлом, а не HTML?

Ответы [ 3 ]

4 голосов
/ 16 декабря 2010

Вы, вероятно, хотите что-то вроде: document.getElementById('id_of_your_image').style.visibility = 'hidden'

ОБНОВЛЕНИЕ Чтобы скрыть все изображения в документе,

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

должно помочь.

1 голос
/ 31 января 2011

Если вы не имеете дело с графиками или изображениями, где важно видеть детали, почему бы и нет:

1) напишите некоторый CSS, который устанавливает максимальную ширину на изображениях 320px или 640px, в зависимости от ориентации .... см. http://www.thecssninja.com/css/iphone-orientation-css, чтобы узнать, как использовать разные CSS для разных ориентаций.

2) вставьте этот CSS в каждый файл HTML после любых других стилей или ссылок на таблицы стилей - внутри элемента <style>, добавленного непосредственно перед тем, как будет работать </body>.

?

Таким образом, изображения по-прежнему видны, но не превышают ширину одной страницы.

В качестве следующего шага вы можете обернуть изображения чем-то вроде <a href='zoom://x'>, где x - это имя файла изображения, - затем в вашей функции UIWebViewDelegate 'shouldStartLoadWithRequest "проверьте, если request.URL.scheme ==" zoom "- именно вы можете поместить новый вид, содержащий изображение x, в масштабируемый контейнер, например iBooks.

1 голос
/ 16 декабря 2010
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);
}
...