UNPKG

@moomfe/zenjs

Version:

ZenJS 是一个高性能的 JavaScript 工具库。

83 lines (64 loc) 2.35 kB
import inBrowser from "../../../shared/const/inBrowser"; import rSearch from "../../../shared/const/rSearch"; import isString from "../../../shared/util/isString"; import isObject from "../../../shared/util/isObject"; import each from "../../../1. Core/3. Object/$each/index"; import { parse, stringify } from "../../../1. Core/66. Root/$querystring/index"; if( inBrowser ){ function SetSearch( oSearch, name, value ){ // remove if( value == null ) delete oSearch[ name ]; // setter else oSearch[ name ] = value; } function Search( search, name, value, isSet, isObj, isGetAll ){ const oSearch = parse( search ); if( isGetAll ) return oSearch; // setter else if( isSet ){ if( isObj ){ each( name, ( name, value ) => { SetSearch( oSearch, name, value ); }); }else{ SetSearch( oSearch, name, value ); } return stringify( oSearch ); } // getter return oSearch[ name ]; } location.$search = function( name, value ){ let isObj, isSet, isGetAll; if( !( isGetAll = arguments.length < 1 ) ){ isSet = arguments.length > 1 || ( isObj = isObject( name ) ); } const newSearch = Search( location.search.substr(1), name, value, isSet, isObj, isGetAll ); if( isSet ) location.search = newSearch; else return newSearch; }; location.$urlSearch = function( url, name, value ){ if( isString( url ) ){ let isObj, isSet, isGetAll; const search = ( ( url.match( rSearch ) || [] )[0] || '' ).substr(1); if( !( isGetAll = arguments.length < 2 ) ){ isSet = arguments.length > 2 || ( isObj = isObject( name ) ); } if( !isSet ){ return search ? Search( search, name, value, isSet, isObj, isGetAll ) : isGetAll ? {} : ''; } let newSearch = '?' + Search( search, name, value, isSet, isObj ); // http://www.zenjs.net/?asd=123#xxx if( search || url.indexOf('?') > -1 ) url = url.replace( rSearch, newSearch ); // http://www.zenjs.net/#xxx else if( url.indexOf('#') > -1 ) url = url.replace( '#', newSearch + '#' ); // http://www.zenjs.net/ else url = url + newSearch; return url; } }; }