Skip to content
uupaa edited this page Dec 11, 2014 · 18 revisions

Spec.prototype.isFullScreenEnable

Spec#isFullScreenEnable():Boolean は、document.fullscreenEnabled の値を返します。

function Spec_isFullScreenEnable() { // @ret Boolean
    if (_runOnBrowser) {
        // Chrome WebView: document.webkitFullscreenEnabled -> false
        // Chrome:         document.webkitFullscreenEnabled -> true
        return document[ this["prefix"](document, "fullscreenEnabled") ];
    }
    return false;
}

Spec.prototype.isGoodByeAndroidBrowser

Spec#isGoodByeAndroidBrowser():Boolean は、spec.WEB_VIEW が false で Android 4.0〜4.3 の Android Browser の場合に true を返します。

function Spec_isGoodByeAndroidBrowser() { // @ret Boolean
                                          // @desc is Android 4.0-4.3 Browser
    var osVer = parseFloat( this["getOSVersion"]() );

    if ( !this["isWebView"]() ) {
        if ( this["isOS"]("Android") ) {
            if (osVer >= 4.0 && osVer < 4.4) {
                var ua = this["getUserAgent"]();

                if ( /Chrome/.test(ua) ) {
                    if ( /Version/.test(ua) ) {
                        return true;
                    }
                } else if ( !/Silk|Firefox/.test(ua) ) {
                    return true;
                }
            }
        }
    }
    return false;
}
var spec = new Spec();
var goodbye = spec.isGoodByeAndroidBrowser();

Spec.prototype.getHardwareConcurrency

Spec#getHardwareConcurrency():Boolean は、WebWorkers で同時に利用可能なスレッド数を返します。

スレッド数は、navigator.hardwareConcurrency の値か、spec.CPU_CORES の値か 1 を返します。
WebWorkers が利用できない場合(WebWorkers をサポートしていない場合)は 0 を返します。

Device result reason
MacBook Pro Retina Mid 2012
Intel Core i7, 4 Cores, HTあり
8 navigator.hardwareConcurrency
MacBook Air Late 2010
Intel Core 2 Duo, 2 Cores, HTなし
2 navigator.hardwareConcurrency
iPhone 5 iOS 8 beta 3 3 navigator.hardwareConcurrency
iPhone 5 iOS 7 2 spec.CPU_CORES
function Spec_getHardwareConcurrency() { // @ret Integer
    var nav = global["navigator"] || {};
    var cores = 0;

    if ("Worker" in global) {
        cores = nav[ this.prefix(nav, "hardwareConcurrency") ] ||
                this["getCPUCores"]() || 1;
    }
    return cores;
}
var spec = new Spec();
var maxWorkers = spec.getHardwareConcurrency();

Spec.prototype.getMaxConnections

Spec#getMaxConnections():Integer は、ブラウザの同時接続数の上限を返します。

function Spec_getMaxConnections() { // @ret Integer - max connections.
    var ver = parseFloat( this["getOSVersion"]() );
    var max = 16;

    if ( this["isBrowser"]("Browser") ) { // Android Browser
        max = ver < 4.0 ? 10 : 16;
    }
    return max;
}
var spec = new Spec();
var maxConnections = spec.getMaxConnections();

Spec.prototype.getConnectionsPerHost

Spec#getConnectionsPerHost():Integer は、ブラウザのホスト当たりの同時接続数を返します。

function Spec_getConnectionsPerHost() { // @ret Integer - connections per host.
    var ver = parseFloat( this["getOSVersion"]() );
    var cph = 6;

    switch ( this["getBrowserName"]() ) {
    case "Browser":
        cph = ver < 4.0 ?  8 :  6;
        break;
    case "IE":
        cph = (ver < 10) ? 6
            : (ver < 11) ? 8
                         : 13;
    }
    return cph;
}
var spec = new Spec();
var connectionsPerHost = spec.getConnectionsPerHost();

Sepc.prototype.isMobileDevice

Spec#isMobileDevice():Boolean はモバイルデバイスで true になります。

function Spec_isMobileDevice() { // @ret Boolean
                                 // @desc Mobile/Tablet Device.
    var isMobile = /Android|iOS|Windows Phone/;

    return isMobile.test( this["getOS"]() );
}
var spec = new Spec();
var mobile = spec.isMobileDevice();

Clone this wiki locally