Avatar billede itmouse Nybegynder
13. juni 2011 - 21:11 Der er 6 kommentarer

Ændre URL ved visning af content i et div tag

Jeg har en hjemmeside med nogle links. Når jeg trykker på et link bliver noget content vist i et div tag, via en javascript streng:

<script type="text/javascript">
    function loadContent(elementSelector, sourceUrl) {
        $("" + elementSelector + "").load("http://localhost:18941/" + sourceUrl + "");
    }
</script>

mine links ser således ud:

java script:loadContent('#maintext', 'forside.aspx');

Dette virker helt fint, men er det muligt at tilføje noget kode, så URL adressen ændre sig i takt med at der bliver ændret div content?

Eks.:
Når jeg trykker på:

<a href="java script:loadContent('#maintext', 'forside.aspx');">Forside</a>

ændres url adressen til:
http://localhost:18941/default.aspx#forside

eller noget lingnende?
Avatar billede coderdk Praktikant
14. juni 2011 - 01:15 #1
prøv at afslutte din loadContent-funktion med:

return første_parameter

eg.

function loadContent(anchor,page)
{
  // ajax indhold ind i #anchor her
  return anchor;
}
Avatar billede itmouse Nybegynder
16. juni 2011 - 15:55 #2
Men hvorfor skulle "return elementSelector;", vises i url'en?

Forstår det ikke helt, det virker desværre heller ikke umiddelbart..
Avatar billede coderdk Praktikant
16. juni 2011 - 16:37 #3
Mjah, ok, der var lidt jeg havde overset, se:


<a href="java script:loadContent('#maintext', 'forside.aspx');">Forside</a>

skal nok ændres til:

<a href="#" onclick="return loadContent('#maintext', 'forside.aspx');">Forside</a>

og din loadContent-funktion skal nok ende med:

curloc = window.location.href.replace(/#.*/g,'');
window.location.href = curloc+elementSelector;
return false;
Avatar billede coderdk Praktikant
16. juni 2011 - 16:40 #4
Din loadContent-funktion kan også ende med:

window.location.hash = elementSelector.substr(1);
return false;
Avatar billede itmouse Nybegynder
16. juni 2011 - 18:09 #5
Jeg har fået det til at virke ved nedenstående:

    function loadContent(contentid, sourceUrl) {
        $("" + contentid + "").load("" + sourceUrl + "");
        window.location.hash = sourceUrl;

        return false;
    }

Link:

NavigateUrl="forside" onclick="return loadContent('#maintext', 'forside.aspx');"

Men lige præcis .substr(1); fjerner ikke #-tegnet, men snarere det første bogstav i siden, eks. #orside. Kan man gøre noget ved det?

Og er det egentlig mugligt at fjerne .aspx ?
Avatar billede coderdk Praktikant
16. juni 2011 - 20:38 #6
Erh, ville du ikke have din URL til at være #maintext i dette tilfælde? Sådan forstod jeg det. Jeg ville have gjort:

    function loadContent(contentid, sourceUrl) {
        $(contentid).load(sourceUrl);
        window.location.hash = contentid.substr(1);

        return false;
    }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester