-
Fototrend
JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)
Új hozzászólás Aktív témák
-
cocka
veterán
válasz Sk8erPeter #5499 üzenetére
Ezt már megtettem, csak az a baj, hogy annyi van, mint a nyüves. Van vagy 15 js fájl és szinte majdnem mindben van ilyen időzítő függvény.
-
Karma
félisten
Nincs. Egyébként se mennél vele semmire.
De egyébként megnyitottam az oldalt és elsőre megtaláltam a tűt: a grid_site.js-ben a 811. sortól kezdődik az automatikus frissítés. A 839. sor az, ami ténylegesen újratölti az oldalt. Ha a reloadBlocker változót rá tudod venni, hogy true értéke legyen; vagy a korábban leírt módon a document.location.assign-t felülvágod egy üres függvénnyel, akkor nem fog tudni frissülni, elvileg.
Szerk.: Úgy látom SO-n, hogy a document.location.assign nem felülvágható Na mindegy, ott kell varázsolni valamit, az a biztos. Vagy letiltani az oldalon a JavaScriptet.
[ Szerkesztve ]
“All nothings are not equal.”
-
Sk8erPeter
nagyúr
Szép találat, türelmes voltál. Végül is ez esetben meg lehetne tenni, hogy a fájtl letölti, átírja ennek megfelelően, és az adott kérésre ezt az új tartalmat szolgálja ki saját extensionnel, DE ennek igen komoly hátránya, hogy "bedrótozza" a korábbi kódot, és a fájl frissülése nála nem lesz érvényes.
Azt nézem, hogy van egy ilyen rész a kódban:setTimeout(function() {
$('iframe').each(function() {
var src = $(this).attr('src');
if(src.match(/youtube\.com/i) || src.match(/video\.mno\.hu/i)) {
reloadBlocker = true;
}
});
if(!reloadBlocker) {
document.location.assign(document.location.href);
}
}, reloadTime);(fúj)
Ezek szerint ha saját extensionből csak beágyaz egy elrejtett YouTube-os iframe-et (lényeg, hogy az src attribútum a youtube-ra mutasson, nyilván az egész oldalt nem érdemes beágyazni ), akkor a reloadBlocker változó értéke true lesz, és a document.location.assign(document.location.href); sor nem fog lefutni. Borzasztó ronda megoldás mindenképp, de legalább nem fog 20 perc múlva (most ez van a reloadTime-ban) újrafrissülni az oldal...Sk8erPeter
-
Karma
félisten
válasz Sk8erPeter #5505 üzenetére
Találtam egy rövidebb verziót.
Ez a blokk átverhető a window.history.pushState-tel:if(document.location.href.match(/hirtv_kesleltetett/i) || document.location.href.match(/hirtv_live/i)) {
reloadBlocker = true;
}Például így: window.history.pushState({}, null, "hirtv_live").
Egy kicsit fejre áll tőle a böngésző, de a feltétel biztosan igaz lesz tőle
[ Szerkesztve ]
“All nothings are not equal.”
-
cocka
veterán
válasz Sk8erPeter #5505 üzenetére
Jajj de ez már ilyen jquerys borzalom, amiből még annyit se értek. Igazából nem azért nem értem, mert nem tudnám megérteni, hanem mert nem ismerem a függvényeket.
-
cocka
veterán
Köszönöm a segítségeket.
-
dqdb
nagyúr
válasz Sk8erPeter #5505 üzenetére
Akkor íme egy Chrome/Opera extension kettőtök kutatása alapján egy kicsit kulturáltabb injektálási módszerrel.
manifest.json
{
"content_scripts":
[
{
"matches": [ "http://mno.hu/*", "https://mno.hu/*" ],
"js": [ "content.js" ],
"run_at": "document_start"
}
],
"web_accessible_resources":
[
"patch.js"
],
"manifest_version": 2,
"name": "setTimeout patch",
"version": "1.0.0"
}patch.js
Window.prototype._setTimeout = Window.prototype.setTimeout;
Window.prototype.setTimeout = function(func, delay) {
if (func.toString().indexOf("reloadBlocker") !== -1)
console.log('blocked setInterval', delay);
else
Window.prototype._setTimeout.apply(this, arguments);
};content.js
try {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.responseText) {
var patch = document.createElement("script");
patch.type = "text/javascript";
patch.innerText = xhr.responseText;
(document.head || document.documentElement).appendChild(patch);
}
};
xhr.open("GET", chrome.extension.getURL("patch.js"), true);
xhr.send(null);
}
catch (ex) {
console.log(ex);
}Vagy Firefox alá Greasemonkey scriptként:
// ==UserScript==
// @name setTimeout patch
// @namespace mno.hu
// @include http://mno.hu/*
// @include https://mno.hu/*
// @version 1
// @run-at document-start
// @grant none
// ==/UserScript==
window._setTimeout = window.setTimeout;
window.setTimeout = function(func, delay) {
if (func.toString().indexOf("reloadBlocker") !== -1)
console.log('blocked setInterval', delay);
else
window._setTimeout.apply(window, arguments);
};Érdekes módon itt csak a window példányt tudtam manipulálni, és abban lecserélni a metódust, magát a Window osztályt nem, hogy a prototípusban cserélgessek.
Természetesen nem vártam ki a 20 percet, a naplóba írt üzenettel teszteltem a kódot.
tAm6DAHNIbRMzSEARWxtZW50ZW0gdmFka5RydIJ6bmkuDQoNClOBc4Ek
-
inf3rno
nagyúr
Van valami ötletetek, hogy hogyan tudnék svg megjelenítés sebességén javítani? Firefox, MSIE rohadt lassú, eszi a processzort és szaggat közben a scroll. Egyedül az opera, ami normálisan megjeleníti gond nélkül. (yEd-ből exportáltam egy gráfot, és azt szeretném betenni egy weboldalra. Mindenhol azt olvasom, hogy az SVG animációk okoznak magas CPU-t, hát nálam anélkül is beszaggat. Lehet inkább d3-al kellene kísérleteznem, csak az annyira gagyi hierarchical layout-nál, legalábbis még nem láttam olyan példát, ami a grouping-ot is megoldta volna áttekinthető módon, ahogy a yEd teszi.)
[ Szerkesztve ]
Buliban hasznos! =]
-
Speeedfire
nagyúr
Sziasztok!
Foglalkozott már valaki ckeditor plugin fejlesztéssel? AC plugin-t szeretnék, de nem akar működni. Esetleg rá tudnátok nézni? [link]
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
Phobion
őstag
Sziasztok!
A segítségeteket szeretném kérni egy aprócska problémához:
weblapot készítek, adott egy ' index.html ' ami meghív egy ' general.js ' scriptet, ebben a script-ben az alábbihoz hasonló sorok találhatóak:
$(document).ready(function() {$('#mm1').click(function() {$('#content').load('xyz.html');}); });
és ezzel zárul:
"
$(document).ready(function() {$('#example tr').click(function() {
var href = $(this).find("a").attr("href");
if(href) {
window.location = href;
}
});$('#example tr').hover(function() {
$(this).css('cursor','pointer');
});}); "
A problémám az lenne, hogy a böngészőben ha a vissza gombra kattolok, konkrétan nem történik semmi, következő kattintásra pedig konkrétan vissza dob az előző oldalra - bármi is volt az -
válaszotokat előre is köszönöm
Sci-fi, fantasy könyvek eladók: https://hardverapro.hu/apro/elado_sci-fi_fantasy_konyvek_4/hsz_1-50.html
-
indigo
aktív tag
válasz Phobion #5516 üzenetére
Csak egy ötlet: nem lehet, hogy ez a kód Ajax load függvénnyel tolja be az oldalt, és ott nem használható a Vissza gomb a böngészőben? Legalábbis, ha a cache-selés nincs megoldva a js fájlban, akkor nem használható a Vissza gomb azon funkciója, hogy a korábban böngészett oldalra irányítson vissza.
-
Phobion
őstag
Nagyon szépen köszönöm mindenkinek a válaszokat! Ezek alapján megpróbáljuk
Sci-fi, fantasy könyvek eladók: https://hardverapro.hu/apro/elado_sci-fi_fantasy_konyvek_4/hsz_1-50.html
-
randras
veterán
Helló!
Majdnem kész (és hamarosan indítandó) oldal tesztelése közben jött ki, hogy a képek megjelenítésére használt PhotoSwipe-al gond van. Ha a captionben lévő gombra kattint a user, be kéne zárulnia + elnavigálnia az oldalról (document.location.replace("asd.php");). Nos valószínűleg még a bezárulás vége előtt lefut a navigálás, ami így néha nem hajtódik végre...
Ha valaki ismeri ezt a képmegjelenítőt, és van ötlete a megoldásra, szívesen fogadom.
pswp.listen('destroy', function() { }); -t próbáltam, úgy sem jobb. Vagy rosszul próbáltam?
-
martonx
veterán
válasz randras #5521 üzenetére
Ember, ne azt a triviális kódot add már meg, hogy hogyan navigalsz, hanem milyen eventre iratkoztál fel, ahol navigálni akarsz? Ide talán: pswp.listen('destroy', function() { });
Illetve látom ezt próbáltad, de mégis nem lehetne konkrét kódot mutatnod? Mobilról vagyok, így nem fogok példa kodot összerakni.[ Szerkesztve ]
Én kérek elnézést!
-
randras
veterán
válasz martonx #5522 üzenetére
var openPhotoSwipe = function(items, options) {
var pswpElement = document.querySelectorAll('.pswp')[0];
var gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, options);
gallery.init();function gotoD() {
gallery.goTo(gallery.items.length-1);
gallery.invalidateCurrItems();
gallery.updateSize(true);
return false;
}function add() {
jQuery.ajax( {
url: "ajax.php",
method: "POST",
data: { title: jQuery(".hidden-title").html(), parameter: jQuery(".sizes-select :selected").last().text(), method: "add" },
dataType: "json"
})
.done(function(items) {
gallery.close();
document.location.replace("asd.php");
})
.fail(function() {
alert("AJAX kommunikációs hiba történt!");
});
}gallery.listen('afterChange', function() {
jQuery(".add").click(add);
jQuery(".goto-D").click(gotoD);
});gallery.listen('destroy', function() { document.location.replace("asd.php"); });
gallery.listen('imageLoadComplete', function(index, item) {
jQuery("img").removeClass("loading");jQuery(".add").click(add);
jQuery(".goto-D").click(gotoD);
});gallery.listen('close', function() {
jQuery("img").removeClass("loading");
});
};A destroy listener gombra kattintva hozzáadva lenne tökéletes, viszont önmagában sem működik, csak 10-ből úgy 5-ször.
[ Szerkesztve ]
-
zsolti_20
senior tag
Sziasztok! Érdeklődni szeretnék, hogyan oldható meg a következő probléma. Először is elkell mondanom, hogy most tanulom az alapokat JS-ből, hobbi szinten gyakorlok kérlek ne kövezettek meg. Csináltam egy weboldalt ahol fellehet tölteni egy változó tartalmát pl.:
var x = 'amit beírsz a weboldalon'
Ennek a var x tartalmát szeretnék ajax posttal tovább küldeni PHP-ba. Ez már mind működik gombnyomásra. Beállítottam a gombnak egy időzítést, így nyomja a postot 1.5mp-ként. Gondolkodtam, hogy tovább kellene az egészet fejleszteni. Lehetséges olyat csinálni, hogy valami figyelje a változót értékét, és ha bekerül mondjuk egy "A" betű akkor automatikusan ugorjon az ajax posthoz?
Szval hogy ne gombbal működjön és postoljon fölöslegesen 1.5mp-ként, hanem a változóhoz kötve, így csak akkor postol ha valamit beírnak. A gombot szeretném elhagyni, hogy ne kelljen nyomogatni. Lehetséges ilyesmit elérni?
-
PumpkinSeed
addikt
válasz zsolti_20 #5525 üzenetére
Ha inputba írod akkor az onchange esemény az ami ezt megoldja neked.
<input type="text" ... onchange="függvény(this)"/>
Az függvény helyére értelemszerűen egy javascript függvényt kell megadni ami feldolgozza azt, hogy ez változott.
A JS függvény paramétere a this ami az inputra mutat és ennek a .value "metódusát" kell meghívni, és ezt egy változóban tárolni pl.:
func(obj){
valami = obj.value;
//ajax kérés helye
}"Akinek elég bátorsága és türelme van ahhoz, hogy egész életében a sötétségbe nézzen, elsőként fogja meglátni benne a fény felvillanását." - Kán
-
zsolti_20
senior tag
válasz PumpkinSeed #5526 üzenetére
Már majdnem tökéletesen működik. Egy dolog érdekelne még, hogy <input type="text" name="txt" value='' onchange="ajax_post()">
Ebben a sorban a value értékének, hogyan lehet egy változó értékét megadni?
-
PumpkinSeed
addikt
válasz zsolti_20 #5527 üzenetére
PHP esetén:
<input type="text" name="txt" value="<?php echo $variable; ?>" onchange="ajax_post()">
JS esetén
<input type="text" name="txt" id="azonosito" value="" onchange="ajax_post()">
<script>
document.getElementById("azonosito").value = variable;
</script>[ Szerkesztve ]
"Akinek elég bátorsága és türelme van ahhoz, hogy egész életében a sötétségbe nézzen, elsőként fogja meglátni benne a fény felvillanását." - Kán
-
DNReNTi
őstag
válasz PumpkinSeed #5526 üzenetére
Csak kiegészítésképpen: az inlne event handler-től sokkal szebb (jobb, és általánosabb) egy event listener használata. Szerintem. Erősítsen meg ebben valaki pls.
but without you, my life is incomplete, my days are absolutely gray
-
zsolti_20
senior tag
válasz PumpkinSeed #5528 üzenetére
Van olyan megoldás, ahol ha új érték kerül be azonnal ajax postol? Mert ezzel az a gond, hogy ki kell menni a fókuszból.
-
inf3rno
nagyúr
válasz zsolti_20 #5530 üzenetére
Persze, oninput például ilyen. Régi msie-ben onpropertychange-el lehetett ugyanezt elérni, nem tudom, hogy a mai msie támogatja e már az oninputot. Lehet még huncutkodni Object.observe-el meg setterrel, de az első azt hiszem még nem támogatott, a második meg nem hiszem, hogy DOM node-ra támogatott, vagy hogy azon keresztül állítaná e be az értéket. Ami még esetleg szóba jöhet, ha nem input-ról lenne szó, hogy setInterval-al nézed az értékét, hogy változott e, de az már tényleg fapados megoldás.
[ Szerkesztve ]
Buliban hasznos! =]
-
GG888
senior tag
válasz zsolti_20 #5530 üzenetére
onchange-et onkeyup-ra cseréld le.
Amúgy az előttem szólónak igaza van, sokkal szebb, ha eventlistenert állítassz be.
Google bácsi elég hasznos válaszokat ad a "javascript event listener keyup" és hasonló kifejezésekre, ha csak js-t használsz.pcmodding.hu | PC MODDING | Minden, ami modding, verhetetlen árak.
-
zsolti_20
senior tag
válasz PumpkinSeed #5528 üzenetére
Ha megadom neki hogy egy változó értékét vegye fel, azt kapom a szövegdobozban hogy "undefined". Viszont ha ehhez hozzá írok egy betűt vagy elveszek, akkor elkezd ajax postolni.
-
Zedz
addikt
Event listener +1.
-
sztanozs
veterán
válasz PumpkinSeed #5528 üzenetére
<input type="text" name="txt" value="<?php echo $variable; ?>" onchange="ajax_post()">
Mivel az inputból akarja közvetlenül feltölteni a változót, így ez csúnyán reflected XSS gyanús - ha nem történik ellenőrzés vagy kódolás szerveroldalon.
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
zsolti_20
senior tag
válasz sztanozs #5538 üzenetére
Jelenleg a weboldalam ugy mukodik, hogy van egy valtozo amit feltoltok egy bizonyos ertekkel pl "alma". Ha megjelenik ez a szo automatikusan ajax postolja. Ezt ugy oldottam meg hogy az ajax postot hozza rendeltem egy gombhoz, aztan js-ben negadtam neki h minden 1,5mp-ben lenyomja egyszer a gombot. Miutan megtortent az ajax post nullazza a a valtozot. Igy az "alma" szo eltunik es csak ures valtozot postol. A celom az lenne hogy amint a valtozo erteket kap ajax postoljon es kivehessem ezt az idoziteses gombnyomkodast.
-
sztanozs
veterán
válasz zsolti_20 #5539 üzenetére
Értem én - ha én nem írok konkrétan semmit a kérdésedre, akkor te sem a felvetésemre reagálsz
Amúgy mitől kap értéket a változó?
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
sztanozs
veterán
válasz zsolti_20 #5541 üzenetére
Az egész koncepciót nem értem... Mit töltesz fel hova honnan, miért ajax-olsz és mit csinálsz szerveroldalon?
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
inf3rno
nagyúr
Babel-el kapcsolatban tudsz némi információval szolgálni? Leginkább az érdekelne, hogy async function és Object.observe mennyire működik vele msie alatt (gondolom babelify + browserify amit használni kellene hozzá). Ha ott megy, akkor mindenhol. Ha meg ennyire széles a support, akkor nem szórakozok ES5-el, hanem inkább áttérek rá én is.
[ Szerkesztve ]
Buliban hasznos! =]
-
Zedz
addikt
válasz inf3rno #5543 üzenetére
Őszintén szólva én csak Chrome alatt próbáltam ki pár dolgot, éles projekten még nem mertem bevetni. De ha jól emlékszem az async functionök még a Babelben is csak mint kísérleti dolog szerepelnek.
IE supportot tekintve azt hiszem IE9 az ami még jobban támogatva van, a 8 pedig mintha csak részben lenne támogatott. Meddig gondoltad az IE kompatibilitást?
-
-
Zedz
addikt
Sziasztok,
Használta már valaki akár kipróbálás szinten a gulp-babel-browserify kombót? A gulpot és browserifyt már sikeresen működésre tudom bírni, de amikor a babelify transform képbe jön, elszáll egy ilyen hibával: browserify(...).transform is not a function.
Google haverom talált pár példát, sajnos mindegyiknél ezt dobja.
Maga a task:
gulp.task('js', function () {
return browserify({ entries: './resources/assets/js/*.js', debug: true })
.transform(babelify)
.bundle()
.pipe(source('bundle.js'))
.pipe(gulp.dest('./public/assets/js'));
}); -
inf3rno
nagyúr
Hát ilyenkor első körben érdemes lenne konzolba kiíratni, hogy mégis mi a browserify({ entries: './resources/assets/js/*.js', debug: true }).transform értéke, ha nem függvény. Gondolom undefined. Ránézésre én azt mondanám, hogy először kellene a babel kódot átalakítani normál js-re, és csak utána átküldeni browserify-on, mert úgy sejtem, hogy a browserify nem tudja feldolgozni a babel kódját. A kód alapján pont fordítva ülsz a lovon. Persze lehet, hogy én tévedek. Browserify-t ma akarom fellőni először gulp-al, karmával meg nightwatch-al egy böngészős projekt tesztelésére. Az utóbbi kettő már ment, de elfelejtettem mióta utoljára használtam őket.
Buliban hasznos! =]
-
inf3rno
nagyúr
Hmm érdekes, itt is úgy használják, ahogy te [link]. Majd ránézek valamikor, ha kiokodtam egy kicsit gulp-al, de gyanítom, hogy addigra megoldod. Ha már szóba került, nincs valami info-tok arról, hogy browserify-al hogyan tudnék kompatibilissé tenni egy totál böngészős kódot? Ilyen window.Symbol meg window.NodeList meg ilyeneket használ. Browserify-nak úgy tudom commonjs modul kell. Jó ugyanígy window-ot használva és elég csak a végén egy module.exports-ot betenni?
Buliban hasznos! =]
-
inf3rno
nagyúr
Közben kiderült, hogy a sorrend stimmel. A gond nem ezzel van, hanem nagy valószínűséggel az entries nem fogad glob patternt, csak útvonalakat egy tömbben. Szóval ha egy glob kimenetet rátennél, akkor valszeg működne. Legalábbis a példakódok alapján, amiket eddig láttam. [link]
[ Szerkesztve ]
Buliban hasznos! =]
Új hozzászólás Aktív témák
- Olasz autó topik (Fiat, Lancia, Alfa)
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Politika
- VR topik (Oculus Rift, stb.)
- Napelem
- Xbox Series X|S
- Alkoholista nevelde
- Spórolós topik
- Redmi Note 13 Pro+ - a fejlődés íve
- bb0t: Gyilkos szénhidrátok, avagy hogyan fogytam önsanyargatás nélkül 16 kg-ot
- További aktív témák...
- MacMini M1
- Dell Latitude E5440 - i5 4310U / 8GB RAM - számla, 6 hó garancia
- Beszámítás! ASRock H310CM i7 8700 16GB DDR4 500GB SSD RTX 2070 Super 8GB CM Q500L CM 500W
- Beszámítás! ASUS Prime B450M R5 5600 16GB DDR4 256GB SSD 1TB HDD RTX 2080 Super Rampage SHIVA TT 600
- WD BLACK SN850P 2 TB M.2 NVME PCI-E 4.0 x4 - Új, Tesztelt - 7300-6600 MBs - Eladó!