JavaScriptCore获取API控制台.log消息
我有一个简单的web应用程序,可以将流式数据打印到console.log。这在网页中非常有效 我想直接将日志消息打印到Xcode控制台,因为它们在流中出现,而不使用web视图 如果可能的话,希望所有的东西都是Swift的,但是Objective-C解决方案是可以的JavaScriptCore获取API控制台.log消息,javascript,jquery,swift,javascriptcore,Javascript,Jquery,Swift,Javascriptcore,我有一个简单的web应用程序,可以将流式数据打印到console.log。这在网页中非常有效 我想直接将日志消息打印到Xcode控制台,因为它们在流中出现,而不使用web视图 如果可能的话,希望所有的东西都是Swift的,但是Objective-C解决方案是可以的 <!DOCTYPE html> <html lang="en"> <head> <title>Barchart Market Data API Examp
<!DOCTYPE html>
<html lang="en">
<head>
<title>Barchart Market Data API Example</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script src="../dist/barchart-marketdata-api-1.0.js"></script>
<script type="text/javascript">
$(function() {
var onMarketUpdate = function(message) {
if (message.type == "TRADE") {
var q = client.getMarketState().getQuote(message.symbol);
if (q)
console.log('Symbol: ' + q.symbol +
'\nLast:' + q.lastPrice +
'\nVolume:' + q.volume +
'\nTime:' + q.time);
}
};
var client = new Barchart.RealtimeData.Connection();
client.connect('qsws-us-e-01.aws.barchart.com', 'user', 'password');
client.on('marketUpdate', onMarketUpdate, 'ESZ6');
});
</script>
<body>
</body>
</html>
我不确定如何将console.log的输出放入上下文中,因为它位于Jquery匿名函数中
它实际上不必来自console.log,我可以将字符串返回到mac/iOS应用程序。不完全确定“console.log”是否可写,但您可以覆盖它,尽可能捕获发送到它的所有内容。ES6代理可能会有所帮助。
$(函数(){
让我很困惑,我如何从swift中调用这个对象并得到任何返回的东西?我也不认为myLib能够像在web上那样获得所需的脚本,如Jquery和barchart marketdata api。我分解并创建了一个web视图进行测试。因此我对Jquery不是很熟悉,但那是$(function(){
语句确实造成了问题。我可以得到对任何普通JavaScript函数的调用,只要它们在任何jQuery调用之前。如果函数在jQuery之后,那么我总是得到“undefined”从我的JSContext和JSValue调用返回…?不完全确定“console.log”是否可写,但您可以覆盖它,尽可能捕获发送到它的所有内容。ES6代理可能会有所帮助吗?$(function(){
让我很困惑,我如何从swift中调用这个对象并得到任何返回的东西?我也不认为myLib能够像在web上那样获得所需的脚本,如Jquery和barchart marketdata api。我分解并创建了一个web视图进行测试。因此我对Jquery不是很熟悉,但那是$(function(){
语句确实造成了问题。我可以调用任何普通JavaScript函数,只要它们在任何jQuery调用之前。如果函数在jQuery之后,那么我总是从我的JSContext和JSValue调用返回“undefined”??
let fileLocation1 = NSBundle.mainBundle().pathForResource("jquery", ofType: "js")!
let jsSource1 : String
do {
jsSource1 = try String(contentsOfFile: fileLocation1)
} catch {
jsSource1 = "Contents of JavaScript not loaded."
}
let fileLocation2 = NSBundle.mainBundle().pathForResource("barchart-marketdata-api", ofType: "js")!
let jsSource2 : String
do {
jsSource2 = try String(contentsOfFile: fileLocation2)
} catch {
jsSource2 = "Contents of JavaScript not loaded."
}
let fileLocation3 = NSBundle.mainBundle().pathForResource("myLib", ofType: "js")!
let jsSource3 : String
do {
jsSource3 = try String(contentsOfFile: fileLocation3)
} catch {
jsSource3 = "Contents of JavaScript not loaded."
}
let context = JSContext()
context.evaluateScript(jsSource1)
context.evaluateScript(jsSource2)
context.evaluateScript(jsSource3)