Ответ 1
Вы не можете использовать jQuery для добавления тегов <script>
. Это было задано много раз. См:
Вы можете сделать это с помощью встроенных функций браузера, НО:
Можно ли просто назначить вашу функцию переменной на вашей странице, а затем оценить ее? Что-то вроде:
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
// add function to page:
NSString * js = @"myFunction = function(){ return \"success!\"; }" ;
[ webView stringByEvaluatingJavaScriptFromString:js ] ;
// execute newly added function:
NSString * result = [ webView stringByEvaluatingJavaScriptFromString:@"myFunction();"] ;
NSLog(@"result=\"%@\"", result) ;
}
обновить явные примеры:
Вы должны использовать мой пример в качестве шаблона!
Во всяком случае, есть 2 части процесса... Часть Javascript и часть Objective-C. На уровне Javascript вы делаете это:
// assign a function to the variable "someFunction":
var someFunction = function(){...};
// call the function in the variable "someFunction":
someFunction();
Вы также можете сделать это, не назначая функцию переменной, например, если вам не нужно ссылаться на функцию в будущем. Выполнение этого без переменной и использование анонимной функции выглядит следующим образом:
( function(){...} )() ;
то есть. вместо var A = <the function>; A();
вы делаете (<the function>)();
Наконец, если ваша анонимная функция принимает аргументы, как и ваша, шаблон выглядит следующим образом:
( function(var0, ..., varN){...} )(arg0, ..., argN);
Используя это как шаблон для вашего кода, ваш JS заканчивается так:
( function(time) {
$(\".t_h\").each(function(i, obj)
{
if ($(this).text() != time) return;
$(this).parent().find(\"form\").each(function(i, obj) {
obj.submit();
});
});
})( 123.456 );
Итак, это то, что вы хотите, чтобы веб-представление выполнялось... Это код, который мы передаем веб-просмотру. Но вы должны построить эту строку в своей программе Obj-C с "усложнением" вставки текущего аргумента времени (123.456
в приведенном выше коде).
Он выглядит следующим образом:
NSString * jsTemplate =
@"( function(time) {"
@" $(\".t_h\").each(function(i, obj) {"
@" if ($(this).text() != time) return;"
@" $(this).parent().find(\"form\").each(function(i, obj) {"
@" obj.submit();"
@" });"
@" });"
@" })( %g );" ;
NSString * js = [ NSString stringWithFormat:jsTemplate, 123.456 ] ;
NSString * result = [ webView stringByEvaluatingJavaScriptFromString:js ] ;
Думаю, что я написал достаточно сейчас:)