<script type="application/javascript">
if(screen.width<1024 && screen.height<768){
document.write('<meta name="viewport" content="width=device-width, initial-scale=1.0">');
}
</script>
function getNumbers(str){ //вернет массив всех чисел в строке
var reg=/\d+/g,results=[];
while(match=reg.exec(str)){
results.push(match[0]*1);
}
return results;
}
console.info("Numbers:",getNumbers("цена за 1 мес. - 25")); // Numbers: [1, 25]
console.info("Price:", getNumbers("цена за 1 мес. - 25")[1]); // Price: 25
Функционал чата таков: текстовое и видео общение. Проблема, собственно в том, что я не знаю JavaScript, а найти и впаять хороший чат не получается.
Пользователей будет около 5-10 миллионов
function loadScript(src,_timeout) {
return new Promise(function(resolve, reject){
if(!src){
reject(new TypeError("filename is missing"));
return;
}
var script=document.createElement("script"),
timer,
head=document.getElementsByTagName("head")[0];
head.appendChild(script);
function leanup(){
clearTimeout(timer);
timer=null;
script.onerror=script.onreadystatechange=script.onload=null;
}
function onload(){
leanup();
if(!script.onreadystatechange||(script.readyState&&script.readyState=="complete")){
resolve(script);
}
}
script.onerror=function(error){
leanup();
head.removeChild(script);
script=null;
reject(new Error("network"));
};
if (script.onreadystatechange === undefined) {
script.onload = onload;
} else {
script.onreadystatechange = onload;
}
timer=setTimeout(script.onerror,_timeout||30000);
script.setAttribute("type", "text/javascript");
script.setAttribute("src", src);
});
}
function loadCSS(src, _timeout) {
var css = document.createElement('link'), c = 1000;
document.getElementsByTagName('head')[0].appendChild(css);
css.setAttribute("rel", "stylesheet");
css.setAttribute("type", "text/css");
return new Promise(function(resolve, reject){
var c=(_timeout||10)*100;
if(src) {
css.onerror = function (error) {
if(timer)clearInterval(timer);
timer = null;
reject(new Error("network"));
};
var sheet, cssRules, timer;
if ('sheet' in css) {
sheet = 'sheet';
cssRules = 'cssRules';
}
else {
sheet = 'styleSheet';
cssRules = 'rules';
}
timer = setInterval(function(){
try {
if (css[sheet] && css[sheet][cssRules].length) {
clearInterval(timer);
timer = null;
resolve(css);
return;
}
}catch(e){}
if(c--<0){
clearInterval(timer);
timer = null;
reject(new Error("timeout"));
}
}, 10);
css.setAttribute("href", src);
}else{
reject(new TypeError("filename is missing"));
}
});
}
loadScript("/engine/classes/js/jquery.pickmeup.min.js").then(function(){
console.log("js ready");
},function(error){
console.log(error);
})
loadCSS("/engine/classes/css/pickmeup.min.css").then(function(){
console.log("css ready");
},function(error){
console.log(error);
})
<a href="/feed" data-virtual>Feed</a>
<a href="/news" data-virtual>News</a>
<a href="/users" data-virtual>Users</a>
<a href="/users">Real link</a>
document.body.addEventListener("click",function(evt){
var target=evt.target;
if(target.tagName=="A"){
if(target.hasAttribute("data-virtual")){
window.history.pushState({},target.textContent,target.href);
evt.preventDefault();
alert("Идем на "+target.href);
}
}
})
window.addEventListener("popstate",function(evt){
alert("Назад на "+window.location.href);
})
.block{
animation: upper 1s linear infinite;
}
<a href="#x=123&y=100">Scroll to x/y</a>
<a href="#scrollTo=#scrollID">ScrollTo element selector (id)</a>
<a href="#scrollTo=.class">ScrollTo element selector (class)</a>
<a href="path/to/page.php#scrollTo=.class">ScrollTo element selector (class)</a>
function decodeScrollPos(hide) {
var params = {}, el, loc = window.location, hash = loc.hash.substr(1);
hide && (loc.hash = "");
hash.split('&').forEach(function (raw) {
var data = raw.split('=');
data[0] && (params[data[0]] = data[1] || "");
})
setTimeout(function () {
if (params.x || params.y) {
console.log('scroll=', hash);
window.scrollTo(params.x, params.y);
} else if (params.scrollTo) {
(el = document.querySelector(params.scrollTo)) && el.scrollIntoView && el.scrollIntoView(true);
}
}, 100);
return params;
}
window.onhashchange = function () {
decodeScrollPos(true);
}
console.log(decodeScrollPos(true));
window.location.hash="";
function wrapText(str, index, count, color){
return [
str.substr(0,index),
'<span style="color:',
color,
'">',
str.substr(index,count),
'</span>',
str.substr(index+count)
].join("");
}
document.querySelector('div').addEventListener('input', function() {
var s=this.innerText;
this.innerHTML=wrapText(s, s.length-1,1,"red");
}