2015-06-06 70 views
4

我有一個代碼,我需要在我的Objective-C代碼中訪問DOM對象模型。我想,當這個執行I得到一個錯誤訪問DOM對象模型JavascriptCore

ReferenceError: Can't find variable: window

我如何可以訪問window對象的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();"]; 

的功能?

回答

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