Pomoc s javascriptom (Greasemonkey)

Ak potrebujete pomoc alebo poradiť, píšte sem (len PC, elektronika atď.)...
Jungle
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2109
Registrovaný: 13 feb 2006, 12:53

Pomoc s javascriptom (Greasemonkey)

Príspevok od používateľa Jungle »

Ahojte,

v JS som lama, takže pekne prosím, pomôžte... Niečo je tu zle a neviem, že čo.

Úlohou skriptu je zobrať kus kódu, zbaviť ho HTML tagov, zmazať všetko pred "0000" a zmeniť URL pre iFrame na získaný string.

Kód: Vybrať všetko

var makeIframe = document.createElement("iframe");
makeIframe.setAttribute("src", "http://wikipedia.org");
makeIframe.setAttribute("scrolling", "no");
makeIframe.setAttribute("id", "myFrame");
makeIframe.style.border = "none";
makeIframe.style.left =  "100px";
makeIframe.style.top = "40px";
makeIframe.style.position = "absolute";
makeIframe.style.width = "1200px";
makeIframe.style.height = "200px";

var getRef = document.getElementById("iframeDiv");
var parentDiv = getRef.parentNode;
parentDiv.insertBefore(makeIframe, getRef);

var oldUrl;

function frameReload()
{

	var getNewURL = document.getElementById("submenu").innerHtml;

	var nextURL = getNewURL.replace(/<\/?[^>]+(>|$)/g, "");
   
	nextURL = /0000(.+)/.exec(str)[1];
	
	if (nextURL != oldUrl) {

	document.getElementById("myFrame").setAttribute("src", nextURL);
	
	oldUrl = nextURL;
	
	}
   
}

window.onload = setInterval(frameReload(), 2000);

TommyHot
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3340
Registrovaný: 25 okt 2009, 0:23
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Pomoc s javascriptom (Greasemonkey)

Príspevok od používateľa TommyHot »

odkial beries submenu? je to globalna premenna? lebo parameter funkcie to nie je.. rovnako myFrame
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Pomoc s javascriptom (Greasemonkey)

Príspevok od používateľa audiotrack »

Lebo si si splietol funkcie setTimeout() a setInterval(), a do stacku sa zmestilo 42294 volaní kým sa nezaplnil a nespadlo to

//autoeditácia príspevku (29 Aug 2012, 13:49)
nj, medzitým si zmenil svoj príspevok tak to číslo nemá zmysel. Ale pointa ostáva - zmýlil si si funkcie

//autoeditácia príspevku (29 Aug 2012, 13:50)
TommyHot napísal:odkial beries submenu? je to globalna premenna? lebo parameter funkcie to nie je.. rovnako myFrame
ani funkciu getURL tam nedal. Ten príklad predtým bol jednoduchší, iba to zkomplikoval a narobil zle :)
Jungle
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2109
Registrovaný: 13 feb 2006, 12:53

Re: Pomoc s javascriptom (Greasemonkey)

Príspevok od používateľa Jungle »

Už som ten kód opravil, čo sa týka duplicitného setInterval, ale aj tak nejde.
TommyHot napísal:odkial beries submenu? je to globalna premenna? lebo parameter funkcie to nie je.. rovnako myFrame
To sú ID pre HTML elementy, ktoré sa nachádzajú v kóde stránky. // jop, úvodzovky som tam nedal...

audiotrack napísal:Lebo si si splietol funkcie setTimeout() a setInterval(), a do stacku sa zmestilo 42294 volaní kým sa nezaplnil a nespadlo to

//autoeditácia príspevku (29 Aug 2012, 13:49)
nj, medzitým si zmenil svoj príspevok tak to číslo nemá zmysel. Ale pointa ostáva - zmýlil si si funkcie
No ja chcem, aby sa funkcia opakovala, preto ten setInterval... Ako to mám teda zmeniť, aby tam bol loop?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Pomoc s javascriptom (Greasemonkey)

Príspevok od používateľa audiotrack »

setInterval() - nastavuje opakovanú akciu
setTimeout() - nastavuje akciu s opozdením

ty tam dávaš v každom volaní setInterval(), tak si to pekne zahltíš. Ak to chceš takto, tak tam dávaj setTimeout(). ak tam chceš setInterval() tak ho nastav iba raz, ale nie v každej vetve

//autoeditácia príspevku (29 Aug 2012, 13:54)
ak sú to ID pre elementy, tak to má byť v úvodzovkach alebo apostrofoch. Takto to sú premenné. A oldURL by mala byť globálna premenná, dúfam že je
Jungle
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2109
Registrovaný: 13 feb 2006, 12:53

Re: Pomoc s javascriptom (Greasemonkey)

Príspevok od používateľa Jungle »

Dal som sem celý kód namiesto tej časti... Ak to viete nejak zjednodušiť, budem len rád. Plus úvodzovky pridané...

Ak dám toto preč, tak zvyšok funguje:

Kód: Vybrať všetko

getNewUrl = document.getElementById("submenu").innerHtml;

nextUrl = getNewUrl.replace(/<\/?[^>]+(>|$)/g, "");
   
nextUrl = /0000(.+)/.exec(str)[1];
Boha, neznášam kódenie :D

//autoeditácia príspevku (29 Aug 2012, 15:04)
Konečne to ide... Dík za váš čas

Kód: Vybrať všetko

function frameReload()
{
	
	var text  = "textContent" in document.body ? "textContent" : "innerText",
    el    = document.getElementById("submenu"),
    arr   = el[text].split("0"),
    nextUrl  = arr.pop();
	
	newUrl = http.concat(nextUrl);
	
	if (newUrl != oldUrl) {

	document.getElementById("myFrame").setAttribute("src", newUrl);
	
	oldUrl = newUrl;
	
	}
   
}

window.onload = frameReload();
Napísať odpoveď