Я хочу разработать веб-страницу, предназначенную для рабочего стола так, чтобы это было презентабельно на 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
из тела действительно работает - сделанный осуществлением, чтобы видеть, использовал ли я вызов правильно.
Я рявкаю неправильное дерево?
К сожалению UiWebView
не обеспечивает API для перехвата и модификации запросов, которые он делает при загрузке ресурса. Это означает, что любой подход, который вы пытаетесь, будет втягиваться в определенную степень.
Первый подход, который я бы попробую:
UiWebviewDelegate
делегат на вид. -WebView: DogintartWoadWithRequest: NavipateType:
и return NO
При обнаружении выполнения запросов CSS. -stringByevaluationJavascriptFromString:
Чтобы ввести JavaScript на страницу, которая динамически загружается / устанавливает таблицу стилей, которую вы хотите использовать. В JavaScript я бы создал совершенно новый
элемент / узел в документе вместо того, чтобы попытаться изменить существующий.
Вы можете загружать CSS из локальной директории проекта
NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
[webView loadHTMLString:htmlString baseURL:baseURL];
подробную информацию смотрите на этом сайте : http://iphoneincubator.com/blog/windows-views/uiwebview-revisited