Buongiorno,
SOno un novellino di javascript e jquery, avrei un problema:
sto creando una webapp di un libro per lavoro e avrei bisogno di hyphenator per la sillabazione, gli altri motori di ricerca utilizzano questo script in modo corretto, Chrome purtroppo no;
Siccome il mio libro è suddiviso in blocchi che si caricano in append o prepend ogni volta che scrollo la pagina Hyphenator esegue all' avvio la prima volta la sillabazione correttamente, ma al blocco successivo che si carica in append riesegue lo script e ogni volta che scrollo lo esegue di nuovo, così facendo però la pagina si appesantisce e dopo due o tre volte non carica pù i blocchi e mi spunta il messaggio di
Warning: multiple execution of Hyphenator.run() – This may slow down the script!
Questi sono i codici di scroll della pagina e della sillabazione! Aiutooo!!!
var deviDetect = new MobileDetect(window.navigator.userAgent);
var device = deviceType(deviDetect);
console.log(device);
switch (device) {
case "desktop":
$(window).bind('wheel', function (e) {
var scroll = $(window).scrollTop();
// console.log("scroll",scroll);
if (scroll < 1) {
console.log("set",setTimeout);
if ($("#genera").hasClass("SIDMode") == false)
allBlocks.loadPrevius();
}
if (isScrolledIntoView($('section:last'))) {
if ($("#genera").hasClass("SIDMode") == false)
allBlocks.loadNext();
//sillabare();
}
});
$(window).scroll(function() {
if ($(window).scrollTop() >= $(document).height() - $(window).height() - 10) {
if (scroll < 1) {
if ($("#genera").hasClass("SIDMode") == false)
allBlocks.loadPrevius();
}
if (isScrolledIntoView($('section:last'))) {
if ($("#genera").hasClass("SIDMode") == false)
allBlocks.loadNext();
}
}
});
break;
case "phone":
console.log("mobile");
var myElem = $("#genera")[0];
var mc = new Hammer(myElem, {
touchAction: "auto",
});
mc.get("pan").set({
direction: Hammer.DIRECTION_VERTICAL,
treshold: 10
});
mc.on("panup pandown", function (ev) {
console.log(ev.type);
if (ev.type == "panup") {
allBlocks.loadNext();
var viewPosY = $("section:last").offset();
Pancounter = 0;
} else if (ev.type == "pandown") {
allBlocks.loadPrevius();
}
});
break;
}
function deviceType(md) {
var xRet = 'desktop';
if (md.mobile()) {
if (md.phone()) {
xRet = 'phone';
}
if (md.tablet()) {
xRet = 'tablet';
}
if (md.os() == 'WindowsPhoneOS') {
xRet = 'phone';
}
}
return xRet;
}
function isScrolledIntoView(elem) {
var docViewTop = $(window).scrollTop();
var docViewBottom = docViewTop + $(window).height();
var elemTop = $(elem).offset().top;
var elemBottom = elemTop + $(elem).height();
return ((elemBottom >= docViewTop) == (elemTop <= docViewBottom));
}
function sillabare(){
console.log("INIZIO SILLABAZIONE");
var ultimaPos=-1;
var eseguito=false;
setInterval(function(){
//console.log("inizio1",inizio);
var currPos=scrollY;
if(ultimaPos!= currPos){
// Hyphenator.stopPropagation();
console.log("entrato!");
Hyphenator.run();
ultimaPos=currPos;
}
},1000);
}