1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

problema em JavaScript [ajuda]

Discussão em 'Web Development' iniciada por danfergo, 15 de Abril de 2009. (Respostas: 4; Visualizações: 750)

  1. danfergo

    danfergo Power Member

    Hey pessoal, é o seguinte,

    Código:
    <script type="text/javascript">
    function getUrlVars()
    {
        var vars = [], hash;
        var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
     
        for(var i = 0; i < hashes.length; i++)
        {    
            hash = hashes[i].split('=');
            hash[1] = unescape(hash[1]);
            vars.push(hash[0]);
            vars[hash[0]] = hash[1];
        }
     
        return vars;
    }
    var write = getUrlVars(); 
    </script>
    este código copia expressoes contidas no url. isto vesse muito mas em PHP.

    ex.: http://url.com/pagina1.htm?name=danfergo

    usando : document.write(write['name']) ele vai copiar o que está depois de name= ou seja, danfergo.

    Mas agora eu agora estou com problemas, porque, se eu usar um url ex.: "http://www.youtube.com/watch?v=zfHr0SIp7kw"

    ele nao copia : "http://www.youtube.com/watch?v=zfHr0SIp7kw" mas sim, "http://www.youtube.com/watch?v="


    Isto dá para alterar?
     
  2. OldMan

    OldMan Power Member

    Era suposto ele copiar o URL todo ou só o valor da var? Nesse caso do youtube seria "zfHr0SIp7kw".
     
  3. svr

    svr Power Member

    Código:
    <script type="text/javascript">
    function getUrlVars()
    {
        var vars = [], hash;
        var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
     
        for(var i = 0; i < hashes.length; i++)
        {    
            hash = hashes[i].split('=');
            hash[1] = unescape(hash[1]);
           // vars.push(hash[0]);
           [COLOR=Red]// vars[hash[0]] = hash[1];[/COLOR] /* <-- O que queres fazer aqui?*/
         [COLOR=DeepSkyBlue] [/COLOR][COLOR=DeepSkyBlue] // Não testei mas parece-me que o que queres fazer é isto, simplesmente
           vars.push(hash[1])[/COLOR]
           // E assim tens a teu array com os valores dos atributos enviados pelo URL
        }
     
        return vars;
    }
    var write = getUrlVars(); 
    </script>
    Cumps
     
  4. danfergo

    danfergo Power Member

    Bem, eu nao entendo muito bem essa parte do

    Código:
    function getUrlVars()
    {
        var vars = [], hash;
        var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
     
        for(var i = 0; i < hashes.length; i++)
        {    
            hash = hashes[i].split('=');
            hash[1] = unescape(hash[1]);
            vars.push(hash[0]);
            vars[hash[0]] = hash[1];
        }
     
        return vars;
    }
    
    eu arranjei um codigo num blog. ja nao sei qual, só sei que se uma pessoa escrever

    document.write(write['name']), caso apareça s escreva no url ....?name=texto
    ele vai escrever texto na pagina.
    Mas caso apareça ?name=texto?outracoisa=
    ele so escreve 'texto?' e eu queria que ele escrevesse tudo.
    Mas penso que arranjei uma solução es solução esfarrapada (eu qero que o codigo copie url's ) , visto que os url's têm normalmente é "?="
    eu troquei a linha:

    indow.locat ion.href.indexOf('?') + 1)
    por
    indow.locat ion.href.indexOf('#') + 1)

    e assim ele copiará o que vem a seguir a ?name=texto
    mesmo que tenha ?= a seguir.

    Agora aproveitando-me do mesmo codigo eu queria usar as propriedades if, else, para criar uma pagina de conteudo dinamico (penso que se chama assim)
    ou seja, ex.: se estivesse escrito subpage1 ele faria actuar os dádos dessa pagina

    já tentei um codigo mas nao funcionou. :S
     
  5. danfergo

    danfergo Power Member

    Ao escrever esta resposta tive uma ideia instantanea para melhorar a minha solução esfarrapada . que agora funciona às 1000 maravilhas, dantes ao usar # tornava a variavel em ancora, funcionava, mas nao era lá muito bom, mas lembrei-me, em vez de alterar o ? alterei o = para um *
     

Partilhar esta Página