[ Lord_Nenad @ 14.10.2010. 15:59 ] @
Pozdrav,

Pravim sajt i jedan deo javascripte treba da zabrani klik na nazad u browseru i to samo na pojedinim stranicama.
Evo scripte:

Code:

function recallhashcheck()
{
setTimeout("checkhashb()",50);
}



function checkhashb() {
if (String(window.location.href).indexOf("#back") != -1) {

window.location.hash = "#";
document.location.hash = "#";
location.hash = "#";


if ( document.getElementById("ctl00_LeadSiteContent_BackBtn") )
{
if ( document.getElementById("ctl00_LeadSiteContent_BackBtn").type == "button" )
{
document.getElementById("ctl00_LeadSiteContent_BackBtn").click();
}
}

if ( document.getElementById("ctl00_LeadSiteContent_btnBack") )
{
if ( document.getElementById("ctl00_LeadSiteContent_btnBack").type == "button" )
{
document.getElementById("ctl00_LeadSiteContent_btnBack").click();
}
}
}
recallhashcheck();
}



if (document.getElementById("ctl00_LeadSiteContent_BackBtn")||document.getElementById("ctl00_LeadSiteContent_btnBack")||document.getElementById("ctl00_LeadSiteContent_btnCancel")||document.getElementById("ctl00_LeadSiteContent_Cancelbtn")) {

for ( i = 0; i < 3; i++ ) {

var randomnumber=Math.floor(Math.random()*110000)

window.location.hash = "#back_" + randomnumber;
document.location.hash = "#back_" + randomnumber;
location.hash = "#back_" + randomnumber;

}

window.location.hash = "#";
document.location.hash = "#";
location.hash = "#";

setTimeout("checkhashb()",50);

}



Ovo se radi preko hash istorije, ova javascript je postavljena na dnu stranice...

Radi dobro na svim browserima, ne izbaci gresku, jedino na Internet Exploreru 7 ne radi...

Ja bih i uspeo da napravim, ali jedino na serveru imam ovakvu gresku. Kad skinem komepletnu stranicu na svoj racunar sve radi kako treba.
To me jos vise zbunjuje...

Uradi se prvi deo, ali kao da se nikad ne pozove:

setTimeout("checkhashb()",50);

Ili postoji neka greska koja zabrani ponavljanje...

Treba mi bas brzo pomoc.




Hvala vam...
[ Nikola Poša @ 14.10.2010. 17:48 ] @
Ovako na prvi pogled, čini mi se da imaš malo previše rekurzije u tom tvom kôdu... Jel imaš uključen neki JS debugger u IE-u?
[ Lord_Nenad @ 14.10.2010. 17:57 ] @
Nemam nikakav debugger, imam samo onaj osnovni, ono da izbaci gresku i to je skroz nedefinisano...

Cega ima previse?

Ali ne razumem, ako scripta ne radi na serveru, kako radi dok je na mom racunaru?
[ Nikola Poša @ 14.10.2010. 18:03 ] @
btw Možda si sve to mogao efikasnije da uradiš ovako:
Code:
(function f() {
    setTimeout(function() {
        //ovde ide kôd tvoje f-je checkhashb()

        f();
    },50);
})();

I to bi se sve nalazilo u tom if-u na kraju tvog kôda, umesto tog dela gde pozivaš setTimeout().
[ Lord_Nenad @ 14.10.2010. 18:08 ] @
Valjda je to isto?

E, a da li bi pomoglo setInterval?

I mislim da je greska negde u ovom delu:

Code:

if (String(window.location.href).indexOf("#back") != -1) {

}


Da li treba ovo drugacije nekako da bude?
[ Nikola Poša @ 14.10.2010. 18:43 ] @
Pa probaj bez poziva te String() funkcije, jer href svojstvo location objekta je već string.

A i skrati sebi muke, ubaci neki JS debugger u IE, npr.:
IE Dev Toolbar
Web Development Helper
[ Lord_Nenad @ 14.10.2010. 20:05 ] @
Izgleda da IE7 ne moze da prepozna kad se menja hash vrednost, a ne cela lokacija...

Jer stalno vidi lokaciju kao: lokacija + "#"

Iako je gore promenjeno u "#back_23958"...

Jel postoji neka druga opcija da se proveri adresa?

Proveravao sam sa:

Code:

window.location.href
document.location.href
location.href


I nijedno ne moze da pronadje pravu vrednost...
Samo prikazuje kao: lokacija + "#"



Da li neko zna kako drugacije da se proveri adresa?
[ Nikola Poša @ 14.10.2010. 20:13 ] @
http://www.w3schools.com/jsref/prop_loc_hash.asp
[ Lord_Nenad @ 14.10.2010. 20:25 ] @
Da, znam kako radi hash...

Ali ja vidim "#back_98676" gore u address baru, ali kad ukucam:

Code:

javascript: alert(location.hash);


Izbaci mi samo "#"... Cak i kad ne pise gore nista, ako pritiscem dovoljno puta nazad pojavi se lokacija bez "#", i cak i tad kad ukucam ovo gore pojavi mi se da je hash "#".


Isto vazi i za "location.href"...
[ Lord_Nenad @ 14.10.2010. 21:26 ] @
Kao da IE uopste ne otvara stranice sa hash...

Stranicu mozete naci na ovoj adresi:

http://www universallinesins com/final/business.php

Ukucajte ZIP kod: 96140

I videcete kako se menja gore adresa i na kraju ostane na:
http://www universallinesins com/final/Business/BusinessInfo.php?add=business#

I kad pritisnete nazad na browseru videcete da se zameni i opet vrati na adresu + "#", ali je kliknuto Go back dugme...

Ali uopste nece da radi sa Internet Explorerom...


I nesto sto je skroz drugacije, skroz nejasno, je to sto scripta nekad radi, a nekad ne...
Kao npr na:

http://www universallinesins com/final/auto.php

Ne znam uopste od cega to zavisi...

SetTimeout radi dobro, jer stalno proverava lokaciju, ali ne znam zasto nekad radi a nekad ne...