WindowTimers 0.1.0

WindowTimers 0.1.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布上次发布2015年2月

Lukas Stuehrk 维护。



  • 作者
  • Lukas Stührk

WTWindowTimers

在 iOS 7 中,Apple 引入了通过 JavaScriptCore JavaScript 引擎执行 JavaScript 的可能性。不幸的是,JavaScriptCore 缺少一些浏览器 JavaScript 环境所具有的对象和函数。特别是 WTWindowTimers 规范 中描述的方法,如 setTimeoutsetInterval 并未提供。这个库实现了这些方法,因此可以在 Objective-C(或 Swift)应用程序中无需使用隐藏的 WebView 就可以使用原本为浏览器使用的 JavaScript 库。

提供的函数

此库试图实现 Window Timers 的完整规范,包括将字符串作为第一个参数传递给 setTimeoutsetInterval 或传递额外的参数给这两个函数。

如何使用它

创建一个 WTWindowTimers 类的新实例。然后调用 extend: 方法,并传递一个 JSContext 实例或一个 JSValue 实例。给定对象将扩展这些函数。

#import <WindowTimers/WindowTimers.h>

...

JSContext *jsContext = [JSContext new];

WTWindowTimers *timers = [WTWindowTimers new];
[timers extend:jsContext];

// Now jsContext has the additional functions setTimeout, clearTimeout, setInterval, clearInterval
jsContext[@"callCounter"] = @0;
[jsContext evaluateScript:@"setTimeout(function(){callCounter += 1;}, 1000);"];

// Run the main loop for at least 1.1 seconds so we make sure that the callback is executed.
[[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.2]];
NSLog(@"callCounter is %@", jsContext[@"callCounter"]); // Will log 1.