2010-12-16 2 views
1

В моем приложении для iPhone, читателе epub, основанном на методе here, я разобрал epub, создал UIWebviews, но у меня небольшая проблема. Есть изображения в эпибах, которые больше ширины экрана 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

Да, но я не хочу знать идентификатор изображения, потому что у изображений нет идентификаторов, и, как я сказал в OP, я не хочу редактировать epub вручную. Есть ли способ выбрать все элементы с тегом «img» и скрыть их? – 2010-12-16 17:35:44

+0

@ Рихард, см. Мое обновление. – 2010-12-16 18:17:26

+0

Как ни странно, это работает в сафари iPhone, но он не вводит должным образом в мое приложение .... я могу заставить другие JS вводить, однако (`alert (« hello world! »)) – 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); 
} 
1

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

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

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

?

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

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

Смежные вопросы