Estoy tratando de usar las funciones jQuery en JavaScriptCore, así que ejecuté la biblioteca jQuery como un script en mi JSContext. Sin embargo, después de hacer eso, todavía no puedo acceder a ninguna función de jQuery. Aquí hay una versión simplificada de mi código en un patio de juegos de Xcode:
import JavaScriptCore let context = JSContext() //Evaluate JQuery library in context: do { let libString = try String(contentsOf: URL(string: "http://code.jquery.com/ui/1.9.2/jquery-ui.js")!, encoding: .utf8) context?.evaluateScript(libString) } catch (let error) { print("Error while processing URL: \(error)") } //Access variables defined by JQuery library: print("'$' in context is defined as: \(context?.objectForKeyedSubscript("$"))") print("'jQuery' in context is defined as: \(context?.objectForKeyedSubscript("jQuery"))")Esto imprime:
'$' en contexto se define como: Opcional (indefinido)
'jQuery' en contexto se define como: Opcional (indefinido)
Si hubiera incluido la biblioteca correctamente, se definirían como funciones. ¿Qué he hecho mal? ¿Debería usar JavaScriptCore para obtener la funcionalidad de jQuery?
Debe incluir la biblioteca jQuery:
NSString *commond = @"window.onload=function(){var jq=document.createElement(\"script\");jq.setAttribute(\"src\",\"https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/js/lib/jquery-1.10.2.js\");document.getElementsByTagName(\"head\")[0].appendChild(jq);window.setTimeout(\"exec()\",1000)};function exec(){document.write($(\"body\").get(0))};"; [self.webView stringByEvaluatingJavaScriptFromString:commond];