node-webkit detection methods
var A = /native/.test(setTimeout);
var B = typeof global !== "undefined" && !/native/.test(global.setTimeout);
var C = A && B;
Environment
A
B
C
node-webkit 0.11.5
true
true
true
Node.js 0.10.33
false
true
false
Chrome 39
true
false
false
Firefox 34
true
false
false
Safari 8
true
false
false
IE 11
true
false
false
( function ( global ) {
var _runOnNode = false , _runOnWorker = false , _runOnBrowser = false , _runOnNodeWebKit = false ;
if ( global . global ) { // Node or NodeWebKit
_runOnNodeWebKit = / n a t i v e / . test ( setTimeout ) ;
_runOnNode = ! _runOnNodeWebKit ;
} else {
_runOnWorker = "WorkerLocation" in global ;
_runOnBrowser = "document" in global ;
}
console . log ( { nw : _runOnNodeWebKit , node : _runOnNode , thread : _runOnWorker , browser : _runOnBrowser } ) ;
} ) ( ( this || 0 ) . self || global ) ;
WebModulePattern に落とし込んだ最終形
( function ( global ) {
// --- define / local variables ----------------------------
// var _isNodeOrNodeWebKit = !!global.global;
// var _runOnNodeWebKit = _isNodeOrNodeWebKit && /native/.test(setTimeout);
// var _runOnNode = _isNodeOrNodeWebKit && !/native/.test(setTimeout);
// var _runOnWorker = !_isNodeOrNodeWebKit && "WorkerLocation" in global;
// var _runOnBrowser = !_isNodeOrNodeWebKit && "document" in global;
// 動作環境確認用
// console.log({ nw: _runOnNodeWebKit, node: _runOnNode, worker: _runOnWorker, browser: _runOnBrowser });
} ) ( ( this || 0 ) . self || global ) ;