UIWebView и локальный файл CSS

Я хочу разработать веб-страницу, предназначенную для рабочего стола так, чтобы это было презентабельно на UIWebView на iPhone. У меня нет доступа к веб-серверу, из которого происходят страницы. Я хотел бы сделать это путем изменения href атрибут <link> элемент таблицы стилей программно.

Я делаю следующее с моим IBOutlet UIWebView *webView.

NSString *cssPath = [[NSBundle mainBundle] pathForResource:@"MyStyleSheet" 
                                                    ofType:@"css"];
NSString *js = @"document.getElementsByTagName('link').setAttribute('href','";
NSString *js2 = [js stringByAppendingString:cssPath];
NSString *finalJS = [js2 stringByAppendingString:@"');"];

//check element structure
NSString *res = [webView stringByEvaluatingJavaScriptFromString:finalJS]; 

Это не работает. Используя [webView stringByEvaluatingJavaScriptFromString:] сообщение и внесение изменения в backgroundColor из тела действительно работает - сделанный осуществлением, чтобы видеть, использовал ли я вызов правильно.

Я рявкаю неправильное дерево?

17
задан John Rudy 19 January 2010 в 21:17
поделиться

2 ответа

К сожалению UiWebView не обеспечивает API для перехвата и модификации запросов, которые он делает при загрузке ресурса. Это означает, что любой подход, который вы пытаетесь, будет втягиваться в определенную степень.

Первый подход, который я бы попробую:

  • предоставить свой собственный UiWebviewDelegate делегат на вид.
  • Реализация -WebView: DogintartWoadWithRequest: NavipateType: и return NO При обнаружении выполнения запросов CSS.
  • После того, как представление завершило загрузку основного ресурса, используйте -stringByevaluationJavascriptFromString: Чтобы ввести JavaScript на страницу, которая динамически загружается / устанавливает таблицу стилей, которую вы хотите использовать.

В JavaScript я бы создал совершенно новый элемент / узел в документе вместо того, чтобы попытаться изменить существующий.

5
ответ дан 30 November 2019 в 12:00
поделиться

Вы можете загружать CSS из локальной директории проекта

NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
[webView loadHTMLString:htmlString baseURL:baseURL];

подробную информацию смотрите на этом сайте : http://iphoneincubator.com/blog/windows-views/uiwebview-revisited

26
ответ дан 30 November 2019 в 12:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: