2015-06-06 2 views
4

У меня есть код, где мне нужно получить доступ к объектной модели DOM в моем коде Objective-C. Я пытаюсь выполнить функцию, предполагают, чтобы вернуть содержимоеДоступ к объектной модели DOM JavascriptCore

NSString *functionScr = [NSString stringWithFormat: @"var fPreset=\"%@\";" 
"var addFavorite = function() {" 
" if (fPreset != '') {" 
"  var ft = window.document.createElement('div');" 
"  ft.innerHTML = decodeURIComponent(fPreset);" 
"  var f = ft.innerHTML;" 
"  var bub = encodeURIComponent(f.childNodes[1]);" 
"  return bub;" 
"  }" 
" }",encodedHTML]; 

[context evaluateScript:functionScr]; 
JSValue *retVAL = [context evaluateScript:@"addFavorite();"]; 

, когда это выполняет я получаю ошибку

ReferenceError: Can't find variable: window

Как я могу получить доступ к объекту окна в JavaScriptCore?

ответ

4

Это не возможно :( DOM-и любое другое окно свойств не доступен в JavaScriptCore. Это чистый JS двигатель

1

Это работает для меня

JSContext *context = [yourwebview valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; 
[context evaluateScript:yourfunctionScr]; 
JSValue *retVAL = [context evaluateScript:@"addFavorite();"]; 
+0

Это делает работу, если «yourwebview» - это «UIWebView». Имейте в виду, что использование кодирования ключевого значения таким образом является хрупким, поскольку внутренние элементы 'UIWebView' могут меняться в любое время. – acj

Смежные вопросы