tag - la llamada al código javascript debe colocarse en
¿Puedo ejecutar JavaScript dentro del código Swift? (2)
Necesito incluir código JavaScript en el código Swift para poder llamar a un chat de signalR, ¿es posible? Si no, ¿puedo convertirlo?
sendmessage
es un botón.
$(function () {
// Declare a proxy to reference the hub.
var chat = $.connection.chatHub;
// Create a function that the hub can call to broadcast messages.
chat.client.broadcastMessage = function (name, message) {
// some code
};
// Start the connection.
$.connection.hub.start().done(function () {
$(''#sendmessage'').click(function () {
// Call the Send method on the hub.
chat.server.send(''name'', ''message'');
});
});
});
y el código de signalr
es:
public void Send(string name, string message)
{
// Call the broadcastMessage method to update clients.
Clients.All.broadcastMessage(name, message);
}
Actualización # 1:
Cambié un poco la pregunta para que no sea confuso por @MartinR
El uso de JavaScriptCore framework incluye código JavaScript en código Swift.
La clase con la que tratarás más, es JSContext . Esta clase es el entorno real (contexto) que ejecuta su código JavaScript.
Todos los valores en JSContext son objetos JSValue , ya que la clase JSValue representa el tipo de datos de cualquier valor de JavaScript. Eso significa que si accede a una variable de JavaScript y una función de JavaScript desde Swift, se considera que ambos son objetos JSValue.
Le recomiendo que lea la documentación oficial sobre el marco de JavaScriptCore .
import JavaScriptCore
// Specify the path to the jssource.js file.
if let jsSourcePath = Bundle.main.path(forResource: "jssource", ofType: "js") {
do {
// Load its contents to a String variable.
let jsSourceContents = try String(contentsOfFile: jsSourcePath)
// Add the Javascript code that currently exists in the jsSourceContents to the Javascript Runtime through the jsContext object.
self.jsContext.evaluateScript(jsSourceContents)
}
catch {
print(error.localizedDescription)
}
}
Más detalles consultar este tutorial.
Puede ejecutar JavaScript dentro de Swift!
Aquí hay un ejemplo que puede ejecutar en Playground para comenzar:
import JavaScriptCore
let jsSource = "var testFunct = function(message) { return /"Test Message: /" + message;}"
var context = JSContext()
context?.evaluateScript(jsSource)
let testFunction = context?.objectForKeyedSubscript("testFunct")
let result = testFunction?.call(withArguments: ["the message"])
result
sería Test Message: the message
.
También puede ejecutar código JavaScript dentro de una WKWebView comandos WKWebView para evaluar Java Script (_: completed Handler WKWebView .
También puede ejecutar JavaScript dentro de un UIWebView llamando a la cadena al evaluar Java Script (de UIWebView , pero tenga en cuenta que ese método ha quedado en desuso y está marcado como iOS 2.0–12.0.