Skrypt blokujący odświeżanie

0

Witam,

Poszukuję skryptu blokującego automatyczne odświeżanie się strony.
Szukałem w necie, ale nic nie znalazłe. Może ma ktoś coś takiego?
Z góry dzięki.

Pozdrawiam

0

jak blokujący automatyczne odświeżanie ? znaczy się masz refresh w meta i chcesz przez skrypt go zaniechać czy jak ?

0

Dokładnie tak...

0

Ciekawa sprawa...
Napisałem takie coś:

var meta = document.getElementsByTagName('meta');
for (i=meta.length-1; i>=0; i--)
{
	if (meta[i].outerHTML.match(/<META http-equiv=refresh/))
	{
		meta[i].outerHTML='';
		break;
	}
}

a potem podejście drugie:

var meta = document.getElementsByTagName('meta');
for (i=meta.length-1; i>=0; i--)
{
	if (meta[i].outerHTML.match(/<META http-equiv=refresh/))
	{
		meta[i].parentNode.removeChild(meta[i]);
		break;
	}
}

To drugie znalałem nawet przez google..

Jednak pomimo braku tagu meta (sprawdziłem) strona nadal się odświeża :/

P.S.
Coś nie teges z autozamykaniem tagów :/
Dodają się na końcu zawsze 2 </code></code>

0

próbowałem na dokładnie 6 sposobów ale okazuje się że meta refresh ma zaje..duży priorytet :/ nie mam pojęcia poddaję się - może to jest specjalnie nie do ominięcia, nawet próba nadpisania (dodania drugiego refresha) okazuje się niedziałająca, hmmm ...

BTW Marooned co tak od końca pętle sprawdzasz ? :)

for (i=meta.length-1; i>=0; i--)
zamiast
for (i=0; i<meta.length; i++)

;P


ostatni log z placu broni:

function zlikwiduj(){
    head = document.getElementsByTagName('head');
    mety = document.getElementsByTagName('meta');
    for(i = mety.length - 1; i > -1; --i){
      if(mety[i].httpEquiv.match(/refresh/i)){
        mety[i].contentEditable = true;
        mety[i].httpEquiv = '';
        mety[i].content = '0; URL=javascript:void(0)';
        mety[i].disabled = true;
        mety[i].parentNode.removeChild(mety[i]);
      }
    }
    refre = document.createElement('meta');
    refre.httpEquiv = 'Refresh';
    refre.content = '1; URL=javascript:void(0)';
    head[0].appendChild(refre);
}

onload = zlikwiduj;
0

Piszac jakiekolwiek skrypty musicie pamietac o tym ze mozna je wylaczyc :)
wiec napiszcze najpirw mozliwosc blokowania bez umieszczania skryptow.

p.s. a mozna napisac skrypt co wykrywa czy jest wlaczaony JS i zablokowac dostep do strrony w przypadku wykrycia blokady ?

0
Adamo napisał(a)

BTW Marooned co tak od końca pętle sprawdzasz ? :)

for (i=meta.length-1; i>=0; i--)
zamiast
for (i=0; i<meta.length; i++)
Bo w pierwszej wersji tylko raz odwołujesz się przez referencję, wywołujesz metodę, zwracasz jej wynik i porównujesz - w wersji drugiej robisz to meta.length razy ...

wwww napisał(a)

p.s. a mozna napisac skrypt co wykrywa czy jest wlaczaony JS i zablokowac dostep do strrony w przypadku wykrycia blokady ?
Możliwe, że znacznik <noscript> tu zadziała - nie testowałem.

0
Marooned napisał(a)

P.S.
Coś nie teges z autozamykaniem tagów :/
Dodają się na końcu zawsze 2

...skrypt uznaje to <META http-equiv=refresh</code> jako nie zamknięty znacznik i jego koniec określa przy < /code > dlatego właśnie dodaje jeszcze po jednym zamykającym znaczniku, tylko nie wiem jak ten problem rozwiązać, tzn jaka strategię postępowania przyjąć...

//to dziwne, bo skoro uznaje <meta jako start to powinien dodać na koniec </meta> a nie </code> :| - M

//[plain] to nie wiem skad sie wzielo, a [/code] dodaje bo uznaje [meta jako poczatek tagu i nawias konczacy ten tag znajduje w pierwszym [/code] <-- o tutaj - m.p

//najprosciej wydaje sie zmienic reg:
/<(\/)?([\w]+)([\s=][^>]*)?>/g
na:
/<(\/)?([\w]+)([\s=][^<>]*)?>/g ale nie sprawdzalem - m.p

0
wwww napisał(a)

p.s. a mozna napisac skrypt co wykrywa czy jest wlaczaony JS i zablokowac dostep do strrony w przypadku wykrycia blokady ?

nie może być skrypt skoro skrypty są wyłączone, no ale proste, skoro strona ma niedziałać jeśli JS wyłączone to niech JS daje dostęp do strony ...

0

Po wklejeniu skryptu Marooned'a wyskakuje błąd i strona się w ogÓle nie wczytuje.
Problem można zobaczyć na http://www.narty.jup.pl/wyciagi/bialka/pogoda2.php
Strona onetu otwiera się w inframie po kilku sek. przeładowuję się i jest w całym oknie. Gdy wchodzi się na stronę narmalnie to się nie odświeża. Co to może być i jak to obejść?

0

eee... przyznam sie ze dokladnie nie wiem o co ci chodzi ale jesli chcesz na swojej stronie wczytac do iframe pogode z onetu i zablokowac to ze strona onetu sama wczytuje sie na pelne okno to raczej zapomnij o tym, nie mozna ingerowac w nie swoje strony, przy probie takiej ingerencji przegladarka wyswietli blad: brak uprawnien...

0

Nie chcę ingerować w onet, bo się nie da chce zrobić coś z moją stroną w której wczytuje się strona oneta. Może jakoś inaczej ją wstawić?

0

pobierz do zmiennej zawartosc strony, wytnij co Ci potrzeba i wstaw na swoja stronke a nie baw sie przez jakies iframe

0

Chodzi o to, że oni to często(co jakieś 2h) aktualizują, więc nie mogę i ja co dwie godziny aktualizować. CO to jest zmienna?

0

ssnake pisał zapewne o użyciu języka server-side, np. PHP
Napisz, czy masz do tego dostęp.

0
Marooned napisał(a)

ssnake pisał zapewne o użyciu języka server-side, np. PHP
Napisz, czy masz do tego dostęp.

po adresie jaki podal JUL.PL http://www.narty.jup.pl/wyciagi/bialka/pogoda2.php wywnioskowalem, ze jest mozliwosc z skorzystania z PHP

JUP.PL napisał(a)

[...] CO to jest zmienna?

hmm, dobre pytanie, tu cos o tym wspominaja http://pl.wikipedia.org/wiki/Zmienna_%28informatyka%29 o i tutaj jest cos na przykładzie PHP http://www.php.net/manual/pl/language.variables.php miłej lektury ;)

//ach, umknął mej uwadze ten link - M

0

Już się dowiedziałem co to jest zmienna, jednak nie o to mi chodziło.
Mam dostęp do wszystkiego(nie mam żadnych ograniczeń), więc mogę zastosować wszystko.
Co radzicie?

0
JUP.PL napisał(a)

[...]
Mam dostęp do wszystkiego(nie mam żadnych ograniczeń), więc mogę zastosować wszystko.
Co radzicie?
http://4programmers.net/Forum/266908#266908

0

Dobra, dobra, ale ja nie znam się na tym, może ktoś mi podrzuci gotowy kodzik?

0

ale co chcesz dokładnie, ten link już nie działa (i ile płacisz :D)

najlepiej jakbyś znalazł jakiś kanał RSS czy cuś, no ale ogólnie patrzysz do źródła i patrzysz między czym a czym jest to czego potrzebujesz, a potem piszesz coś w stylu:

<?php
$zmienna = implode('', file('http://adres.strony.z.ktorej.chcesz.cos.pobrac'));

$przed = 'cos w kodzie występujące przed tym co chcesz pobrać';
$po = 'cos w kodzie występujące po tym co chcesz pobrać';

$zmienna = substr($zmienna, strpos($zmienna, $przed) + strlen($przed));
$zmienna = substr($zmienna, 0, strpos($zmienna, $po));

echo $zmienna; // <- to co chcesz pobrać

?>

możesz też wykorzystać wyrażenia regularne ale do takiej prostej czynności raczej nie polecam bo są trochę "zasobożerne"

w tym kodzie musisz tylko pozmieniać zaznaczone akurat na czerwono fragmenty, taki głupi przykład żeby pobrać liczbę ludzi na czaterii w ten (dziwny) sposób w pierwszym miejscu wstawić 'http://www.czateria.pl' w drugim 'Na CZATerii jest obecnie <b>' a w trzecim '</b> osób' ;P

wynik możesz sobie cache'ować na swoim serwerze i zamiast wywoływać to to wysłać żądanie HEAD lub GET z if-modified sprawdzające czy coś zaktualizowali, albo możesz do tego zaprzęgnąć cron'a jeśli tylko masz dostęp, ale to już inna bajka ...</b>

1 użytkowników online, w tym zalogowanych: 0, gości: 1