Какой метод я должен вводить JavaScript? (StringByEvaluatingJavaScriptFromString) - PullRequest
1 голос
/ 29 февраля 2012

У меня есть приложение для IOS.

В приложении есть MainViewController, который представляет / отклоняет модальное представление из файла nib webViewController (содержит NavBar и UIWebView).Я хочу внедрить свои функции javascript в каждую веб-страницу, загруженную UIWebView, и эти функции будут вызываться на веб-страницах, что означает, что все функции должны были завершить загрузку до завершения загрузки страниц.например, когда снова появляется ModalView (сначала он работает нормально). Страница не знает мою введенную функцию.

Так что мой вопрос:

  • Куда мне добавить инъекцию?JavaScript, если запрос загрузки UIWebView, когда ModalView присутствует?Перед loadRequest?didStartLoad?didFinishLoad?
  • Что мне делать с UIWebView при закрытии ModalView?загрузить about: blank request?

Спасибо за чтение и любую помощь / предложение.:)

Ответы [ 2 ]

1 голос
/ 29 февраля 2012

Где я должен внедрить свой JavaScript, если запрос загрузки UIWebView при наличии ModalView? Перед loadRequest? didStartLoad? didFinishLoad

В webViewDidFinishLoad:. Вы не можете позвонить stringByEvaluatingJavaScriptFromString: до этого момента. К сожалению, нет хорошего способа добраться до этой точки без отображения веб-представления, что может иногда приводить к тому, что представление «мигает», если ваш JavaScript слишком сильно меняет ситуацию. Иногда я добавляю дополнительный вид поверх веб-представления, чтобы скрыть его до тех пор, пока webViewDidFinishLoad: не завершится.

Что мне делать с UIWebView при закрытии ModalView? загрузить about: blank request?

Ничего. Это должно быть выпущено, когда модальное представление выпущено.

0 голосов
/ 29 февраля 2012

Где я должен внедрить свой JavaScript, если запрос загрузки UIWebView при наличии ModalView?Перед loadRequest?didStartLoad?didFinishLoad?

Я полагаю, в вашей ситуации, если пользователь щелкнет какую-нибудь вашу целевую ссылку или HTML-элемент, тогда mainViewController появится с методом presentModalView, верно?(Если это не так, пожалуйста, исправьте меня)
Как указано выше, вы можете вызвать javascript в UIWebviewDelegate следующим образом:

-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType 
{
     NSString *url = [[inRequest URL] absoluteString];

     /* separate your href string such as href="doMyFunction?presentView" */
     NSArray *comp1 = [url componentsSeparatedByString:@"?"];
     NSString * checker = [comp1 objectAtIndex:1];
     if([checker isEqualToString:@"presentView"])
     {
         // do my code
     }
}

Что мне делать с UIWebView при закрытии ModalView?загрузить запрос about: blank?

Ваш MainView уже закрывает ваше UIWebview, поэтому это зависит от вашей цели, например

  • изменить некоторую информацию
  • скрыть некоторыекомпонент
  • ничего не делать

Надеюсь, это поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...