Справка по использованию кода Javascript в UIWebView

Я хотел бы запустить следующий код в webView, чтобы содержимое можно было редактировать:

javascript: document.body.contentEditable ='true'; document.designMode='on'; void 0

До сих пор я пытался это сделать:

- (void)webViewDidFinishLoad:(UIWebView *)webViews  
{    
    NSString *string = @"javascript: document.body.contentEditable ='true'; document.designMode='on'; void 0";
    [webView stringByEvaluatingJavaScriptFromString:string];
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:string]]];
    NSLog(@"finished load");
}

Если бы вы могли сказать мне, как заставить это работать, это было бы здорово.


person MKDev    schedule 03.01.2011    source источник


Ответы (2)


Мне нравится оборачивать вызовы JavaScript в JavaScript. Под этим я подразумеваю, что если в JavaScript нужно запустить несколько строк, нужно обернуть их в функцию и вызвать только эту функцию. Это четко отделяет логику и позволяет вам тестировать вещи строго в Safari, не создавая вокруг него приложение для iPhone.

Кроме того, я согласен с тем, что Эван сказал об избавлении от [webView loadRequest:.

РЕДАКТИРОВАТЬ: Подводя итог, я имею в виду что-то вроде:

function foo() { document.body.contentEditable ='true'; document.designMode='on'; }

А затем просто вызывая «foo» в своем звонке с iOS.

person donkim    schedule 04.01.2011
comment
спасибо .. еще одна вещь, как я могу это назвать, и я бы сказал так: [webView stringByEvaluatingJavascriptFromString:function foo() { document.body.contentEditable = 'true'; document.designMode = 'включено'; }]; [строка webViewByEvaluatingJavascriptFromString:foo]; - person MKDev; 05.01.2011
comment
У вас будет функция, которую я написал в вашем HTML-файле. Таким образом, вы можете проверить, работает ли ваш код в браузере, а не в приложении, и, когда вы уверены, что он работает, вы можете вызвать его на iPhone. Вы бы назвали это в iOS, выполнив: [webView stringByEvaluatingJavascriptFromString:@"foo()"] - person donkim; 05.01.2011
comment
о, я не использую html-файл - person MKDev; 05.01.2011
comment
О... так что вы хотите вызвать это для любого HTML, который вы загружаете в UIWebView, да, не обязательно то, что вы создаете сами. Мои извинения. :) - person donkim; 05.01.2011

Удалите префикс JavaScript:. Этот метод уже знает, что вы будете оценивать JavaScript, поэтому нет необходимости в избыточности.

Кроме того, не отправляйте этот запрос в конце. Оценка с использованием этого метода приведет к его выполнению на текущей странице.

person Evan Mulawski    schedule 03.01.2011
comment
Я пробовал это, но это все еще не работает. Спасибо за быстрый ответ - person MKDev; 03.01.2011
comment
Я редактировал свой ответ пару раз. Вы выполнили все вышеперечисленные задачи? - person Evan Mulawski; 03.01.2011
comment
Да, я выполнил все задания - person MKDev; 03.01.2011
comment
эй, это тоже не работает. В настоящее время страница по-прежнему недоступна для редактирования. - person MKDev; 03.01.2011