A simple and flexible JavaScript library that manages "window.location.hash". With the ability to support queries. (#value?query)
This project is maintained by irmmr
All components related to hash query
. These components only manage the hash query and do not change the other parts.
// Hash => #?page=3
Hash.q.set("page", 3);
// Hash => #Hello?p=1&order=ASC
Hash.query.set({
p: 1,
order: "ASC",
});
QueryValues The value of the queries can be in the form of numbers, strings, Boolean and Null.
Set query to hash.
Set a single query with value.
name (string
) Query name
value (string |
number |
boolean |
null ) Query value |
Set multiple queries.
data (object
)<string
:QueryValues
> Queries as an object
returns HashCpQuery
// Hash is => #Hello-World
// After => #Hello-World?page=1
Hash.q.set("page", 1);
// Hash is => #Hello-World?page=1
// After => #Hello-World?page=1&order
Hash.q.set("order", null);
// Hash is => #Hello-World?a=b
// After => #Hello-World?a=b&c=d&e=false
Hash.q.set({
c: "d",
e: false,
});
Get any query or queries with values.
Get all queries with values.
returns object
Get a single query value.
name (string
) Query name
returns QueryValues |
undefined |
Get some of queries with name.
If the entered name does not exist, the value will be set to
undefined
.
returns object <string :QueryValues |
undefined > |
// Hash is => #hey?a=b&id=898482
// Returns => Object { a: "b", id: 898482 }
Hash.q.get();
// Hash is => #hey?a=b&id=898482
// Returns => 898482
Hash.q.get("id");
// Hash is => #hey?a=b&id=898482
// Returns => undefiend
Hash.q.get("type");
// Hash is => #hey?a=b&id=898482&s=false
// Returns => Object { a: "b", s: false }
Hash.q.get(["a", "s"]);
// Hash is => #hey?a=b&id=898482&s=false
// Returns => Object { a: "b", ot: undefined }
Hash.q.get(["a", "ot"]);
Add query.
Add a single query with value.
name (string
) Query name
value (string |
number |
boolean |
null ) Query value |
Set multiple queries.
data (object
)<string
:QueryValues
> Queries as an object
returns HashCpQuery
// Hash => #/message?page=1
// After => #/message?page=1&type=normal
Hash.q.add("type", "normal");
// Hash => #/message?page=1
// After => #/message?page=1&order=DESC&active=false
Hash.q.add({
order: "DESC",
active: false,
});
Clear query from hash.
returns HashCpQuery
// Hash => #message?page=1
// After => #message
Hash.q.clear();
Define queries by deleting other ones.
data (object
)<string
:QueryValues
> Queries as an object
returns HashCpQuery
// Hash => #msg?page=1
// After => #msg?p=12&any
Hash.q.define({
p: 12,
any: null,
});
Check for the existence of query types.
Is there a query at all?
returns boolean
Checking the existence of a query with a name.
name (string
) Query name
returns boolean
Checking the existence of multiple queries with their name.
name (array
)<string
> Queries name
returns boolean
// Hash is => #val?a=b&c=d&h&i=93035
// Returns => true
Hash.q.have();
// Hash is => #val
// Returns => false
Hash.q.have();
// Hash is => #val?a=b&c=d&h&i=93035
// Returns => true
Hash.q.have("i");
// Hash is => #val?a=b&c=d&h&i=93035
// Returns => true
Hash.q.have(["a", "c", "h"]);
Check a query value.
name (string
) Query name
value (QueryValues |
undefined ) Value to check |
returns boolean
// Hash is => #val?a=b&c=d
// Returns => false
Hash.q.is("a", "anything");
// Hash is => #val?a=b&c=d
// Returns => true
Hash.q.is("c", "d");
// Hash is => #val?a=b&c=d&h&i=93035
// Returns => true
Hash.q.is(h, null);
// Hash is => #val?a=b&i=93035
// Returns => true
// Means "type" is not defined as a query
Hash.q.is("type", undefined);
Remove query.
Single query remove.
name (string
) Query name
Multiple query remove.
name (array
)<string
> Queries name
returns HashCpQuery
// Hash is => #val?a=b&c=d
// After => #val?c=d
Hash.q.remove("a");
// Hash is => #val?a=b&c=d&e=f
// After => #val?e=f
Hash.q.remove(["a", "c"]);
Update queries.
Update a query value.
name (string
) Query name
value (string |
number |
boolean |
null ) Query value |
Update multiple queries.
data (object
)<string
:QueryValues
> Queries as an object
returns HashCpQuery
// Hash => #msg?page=1
// After => #msg?page=20
Hash.q.update("page", 20);
// Hash => #msg?page=1&order=ad&float=false
// After => #msg?page=1&order&float=true
Hash.q.update({
order: null,
float: true,
});