Skip to content

Instantly share code, notes, and snippets.

@ixqbar
Created November 14, 2016 02:55
Show Gist options
  • Save ixqbar/520d772cd7511ed4ccdbbaf0a29d9597 to your computer and use it in GitHub Desktop.
Save ixqbar/520d772cd7511ed4ccdbbaf0a29d9597 to your computer and use it in GitHub Desktop.
js

browser

var ua = navigator.userAgent,win = window, doc = document, docElem = doc.documentElement;
var data = {
    iphone: /iphone/i.test(ua),
    ipad: /ipad/i.test(ua),
    ipod: /ipod/i.test(ua),
    android: /android/i.test(ua),
    webkit: /webkit/i.test(ua),
    chrome: /chrome/i.test(ua),
    safari: /safari/i.test(ua),
    firefox: /firefox/i.test(ua),
    ie: /msie/i.test(ua),
    opera: /opera/i.test(ua),
    supportTouch: 'ontouchstart' in win,
    supportCanvas: doc.createElement('canvas').getContext != null,
    supportStorage: false,
    supportOrientation: 'orientation' in win,
    supportDeviceMotion: 'ondevicemotion' in win
};

//`localStorage` is null or `localStorage.setItem` throws error in some cases (e.g. localStorage is disabled)
try{
    var value = 'xingqiba';
    localStorage.setItem(value, value);
    localStorage.removeItem(value);
    data.supportStorage = true;
}catch(e){ };

//vendro prefix
var jsVendor = data.jsVendor = data.webkit ? 'webkit' : data.firefox ? 'Moz' : data.opera ? 'O' : data.ie ? 'ms' : '';
var cssVendor = data.cssVendor = '-' + jsVendor + '-';

//css transform/3d feature dectection
var testElem = doc.createElement('div'), style = testElem.style;
var supportTransform = style[jsVendor + 'Transform'] != undefined;
var supportTransform3D = style[jsVendor + 'Perspective'] != undefined;
if(supportTransform3D){
    testElem.id = 'test3d';
    style = doc.createElement('style');
    style.textContent = '@media ('+ cssVendor +'transform-3d){#test3d{height:3px}}';
    doc.head.appendChild(style);

    docElem.appendChild(testElem);
    supportTransform3D = testElem.offsetHeight == 3;
    doc.head.removeChild(style);
    docElem.removeChild(testElem);
};
data.supportTransform = supportTransform;
data.supportTransform3D = supportTransform3D;
@ixqbar
Copy link
Author

ixqbar commented Nov 15, 2016

function load_resource(name, type, url){
	if (document.getElementById(name)) return;
	var resource;
	
	switch (type) {
	    case 'css':
        	resource = document.createElement('link');
        	resource.href = url;
        	resource.rel  = 'stylesheet';
        	resource.type = 'text/css';
    	    break;
    	case 'js':
    	    resource = document.createElement('script');
        	resource.src  = url;
        	resource.type = 'text/javascript';
        	resource.id   = name;
    	    break;
    	default:
    	    return;
	}
	
	resource.id = name;
	document.getElementsByTagName('head').item(0).appendChild(resource);
}

@ixqbar
Copy link
Author

ixqbar commented Nov 16, 2016

(function() {
            var hm = document.createElement("script");
            hm.src = "xxx.js";
            var s = document.getElementsByTagName("script")[0];
            s.parentNode.insertBefore(hm, s);
 })();

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment