CSS-инъекция в UIwebview - PullRequest
       6

CSS-инъекция в UIwebview

3 голосов
/ 03 августа 2011

Я пытаюсь использовать этот пример, опубликованный https://gist.github.com/811993; Я пытаюсь использовать специальный файл CSS для веб-сайта www.baomoi.com для моих родителей, чтобы сделать его более минимистичным и контрастным. Этот пример кода вызывает принудительное закрытие при загрузке. У меня есть файл styles.css в папке / Resources. Как я могу определить, где это вызывает ошибку?

Спасибо всем заранее за помощь.

https://gist.github.com/811993

В отладке вот что я получаю: E / KrollCallback (382): (kroll $ 1: app: //app.js) [234,4575] Ошибка, вызов: [callMethod UI.WebView.UI.WebView: событие: загрузить ноль], сообщение: размер должен быть> = 0 E / KrollCallback (382): java.lang.IllegalArgumentException: размер должен быть> = 0E / AndroidRuntime (345): в org.appcelerator.titanium.kroll.KrollHandlerThread.run (KrollHandlerThread.java:86) E / AndroidRuntime (345): вызвано: java.lang.IllegalArgumentException: размер должен быть> = 0 E / AndroidRuntime (345): на java.io.ByteArrayOutputStream. (ByteArrayOutputStream.java:67) E / AndroidRuntime (345): в org.appcelerator.titanium.util.TiStreamHelper.toByteArray (TiStreamHelper.java:106) E / AndroidRuntime (345): в org.appcelerator.titanium.TiBlob.getBytes (TiBlob.java:120)

1 Ответ

3 голосов
/ 26 ноября 2011

Вместо использования свойства url для вставки вашего JavaScript, вы должны использовать evalJS.

Вы можете прочитать ваши локальные данные CSS из файла и вставить их так:

// read the css content from styles.css    
var cssContent = Titanium.Filesystem.getFile('styles.css');

// make it available as a variable in the webview    
webview.evalJS("var myCssContent = " + JSON.stringify(String(cssContent.read())) + ";");

// create the style element with the css content    
webview.evalJS("var s = document.createElement('style'); s.setAttribute('type', 'text/css'); s.innerHTML = myCssContent; document.getElementsByTagName('head')[0].appendChild(s);");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...