внедрение javascript в uiwebview iOS 8

#javascript #objective-c #uiwebview #ios8

#javascript #objective-c #uiwebview #ios8

Вопрос:

Я тестирую свой проект в iOS 8 preview 2. И теперь я сталкиваюсь с двумя проблемами, связанными с uiwebview
. Я использую следующий код для внедрения своего скрипта

 NSString *jsCLOSE_WINDOW = @"function CLOSE_WINDOW(){
    document.location ='mySchema://FUNCTION=CLOSE_WINDOW';
}";
[self.webView stringByEvaluatingJavaScriptFromString:jsCLOSE_WINDOW];
  

в "-(void)webViewDidFinishLoad:(UIWebView *)webView"
и получить ответ в

  - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
  

он отлично работает в iOS 7.1 и более ранних версиях.
Но в iOS 8 предварительный просмотр 2

1.document.location = 'mySchema://FUNCTION=CLOSE_WINDOW'; 
кажется, больше не работает? Я не могу получить ответ в "shouldStartLoadWithRequest" 2.in iOS 7.1 и более ранних версий каждый раз перенаправляет страницу на другую
(ex:page1.html -> page2.html -> page3.html )
"webViewDidFinishLoad" будет запускаться на каждой странице.
Но в iOS 8 preview 2 это срабатывает только один раз на первой странице

Как мне это исправить?, или это новые ограничения в iOS 8? есть идеи? ценю.

Ответ №1:

После долгих поисков. Наконец, у меня есть решение, просто перейдите по ссылке здесь. проблема заключается в javascript. перепишите javascript в качестве образца стиля, и он отлично работает в iOS 8 (протестирован в Beta3) прямо сейчас.

Ответ №2:

Кажется, что iOS8 не может пройти : или либо = в вашем случае сразу после имени функции. Попробуйте выполнить замену из строки

 document.location ='mySchema://FUNCTION=CLOSE_WINDOW';
  

чтобы использовать ? метку, подобную

 document.location ='mySchema://FUNCTION?CLOSE_WINDOW';
  

должно работать.