Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!-- gs.html -->
- <!DOCTYPE html>
- <html lang="pt">
- <head>
- <meta charset="UTF-8">
- <title>Uma interface alternativa para procuras Google</title>
- <script src="gs.js"></script>
- </head>
- <body>
- <form>
- <fieldset>
- <legend>Configuração da procura</legend>
- <label for="id_exp">
- Expressão a procurar:
- </label>
- <input type="text"
- id="id_exp"
- placeholder="procura algo"
- size="32">
- <br>
- <label for="id_check_ordem_relevante">
- Ordem dos termos é relevante:
- </label>
- <input type="checkbox"
- id="id_check_ordem_relevante"
- checked
- >
- <br>
- <!-- input para expressar termos a rejeitar -->
- <label for="id_reject">Expressão(ões) a rejeitar: </label>
- <input type="text"
- id="id_reject"
- placeholder="rejeitar resultados com..."
- size="32"
- >
- <fieldset>
- <legend>Rank inicial e quantidade de resultados</legend>
- <label for="id_rank_inicial">
- Rank do primeiro resultado:
- </label>
- <input id="id_rank_inicial"
- type="number"
- min="1"
- step="1"
- value="1"
- >
- <br>
- <label for="id_quantidade">
- Quantidade de resultados:
- </label>
- <input id="id_quantidade"
- type="number"
- min="10"
- max="50"
- value="50"
- >
- <br>
- </fieldset>
- <fieldset>
- <legend>Filtros de origem dos resultados</legend>
- <label for="id_filtro_site">Aceitar apenas resultados de: </label>
- <input type="text"
- id="id_filtro_site"
- placeholder=".facebook.com">
- <br>
- <label for="id_filtros_pre_disponiveis">
- Filtros pré-disponíveis:
- </label>
- <select id="id_filtros_pre_disponiveis">
- <option value="" selected>respeitar a caixa de texto</option>
- <option value=".edu">.edu</option>
- <option value=".pt">.pt</option>
- <option value=".br">.br</option>
- <option value=".uk">.uk</option>
- <option value=".com">.com</option>
- </select>
- </fieldset>
- <fieldset>
- <legend>Segurança / Censura + Recência</legend>
- <label for="id_select_safety">A sua escolha:</label>
- <select id="id_select_safety">
- <option value="images">apenas quanto a imagens</option>
- <option value="off">sem qualquer segurança/censura</option>
- <option selected value="medium">média</option>
- <option value="high">alta</option>
- </select>
- <br>
- <label for="id_select_recency">Recência da indexação dos resultados:</label>
- <select id="id_select_recency">
- <option value="any">qualquer idade</option>
- <option value="d1">1 dia</option>
- <option value="w1">1 semana</option>
- <option value="m1">1 mês</option>
- <option value="y1">1 ano</option>
- </select>
- </fieldset>
- </fieldset>
- <input type="button"
- value="procurar"
- id="id_btn_procurar">
- </form>
- </body>
- </html>
- *********************
- // gs.js
- // *APENAS QUANDO* todos os recursos HTML e JS
- // do sistema tiverem sido integralmente
- // carregados pelo cliente/browser (e só então)
- // é que desencadeamos a computação; i.e. boot
- window.onload = boot;
- const GS = "https://www.google.com/search"
- const ID_EXP = "id_exp",
- ID_CHECK_ORDEM_RELEVANTE =
- "id_check_ordem_relevante",
- ID_BTN_PROCURAR = "id_btn_procurar",
- ID_REJECT = "id_reject",
- ID_RANK_INICIAL = "id_rank_inicial",
- ID_QUANTIDADE = "id_quantidade",
- ID_FILTRO_SITE = "id_filtro_site",
- ID_SELECT_FILTRO = "id_filtros_pre_disponiveis",
- ID_SELECT_SAFETY = "id_select_safety",
- ID_SELECT_RECENCY = "id_select_recency";
- var oExp, // a expressão a procurar
- oCheckOrdemRelevante, // a ordem dos termos importa?
- oBtnProcurar, // botão q inicia a procura
- oReject, // texto a rejeitar
- oRankInicial, // o rank do primeiro resultado a apresentar
- oQuantidade, // a quantidade total de resultados a obter
- oFiltroSite, // nome de site(s) aceitáveis para origem dos resultados
- oSelectFiltro, // conj fechado de filtros
- oSelectSafety, // segurança/censura
- oSelectRecency; // recencia da indexação
- function id (pId){
- return document.getElementById(pId);
- }//id
- function boot(){
- //1 - associações
- oExp = id(ID_EXP);
- oCheckOrdemRelevante = id(ID_CHECK_ORDEM_RELEVANTE);
- oBtnProcurar = id(ID_BTN_PROCURAR);
- oReject = id(ID_REJECT);
- oRankInicial = id(ID_RANK_INICIAL);
- oQuantidade = id(ID_QUANTIDADE);
- oFiltroSite = id(ID_FILTRO_SITE);
- oSelectFiltro = id(ID_SELECT_FILTRO);
- oSelectSafety = id(ID_SELECT_SAFETY);
- oSelectRecency = id(ID_SELECT_RECENCY);
- // TODO : controlo de qualidade
- //2 - conferir comportamento
- oBtnProcurar.onclick = go_procurar;
- oSelectFiltro.onchange = mudar_filtro;
- }//boot
- function mudar_filtro(){
- novoValorEscolhido = oSelectFiltro.value;
- oFiltroSite.value = novoValorEscolhido;
- }
- function go_procurar(){
- //v1
- //window.alert("Irei procurar, quando souber.")
- pedido = GS+"?";
- // acesso aos condicionantes da procura
- expressao = oExp.value.trim()
- expressaoCodificada =
- encodeURIComponent(expressao);
- textoParaRejeitar = oReject.value.trim();
- //as_epq
- bOrdemRelevante =
- oCheckOrdemRelevante.checked;
- // construção do pedido é condicional
- // python and or not
- // JS && e-lógico-cc || ou-lógico-cc ! negação & e-lógico-completo | ou-lógico-completo
- if(!bOrdemRelevante)
- pedido+="q="+expressaoCodificada;
- else // sendo a ordem relevante, usar o param adequado
- pedido+="as_epq="+expressaoCodificada;
- if(textoParaRejeitar!="") {
- textoParaRejeitar =
- encodeURIComponent(textoParaRejeitar);
- pedido += "&as_eq=" + textoParaRejeitar;
- }
- iRankInicial = Number(oRankInicial.value);
- pedido+="&start="+iRankInicial;
- iQuantidade = Number(oQuantidade.value);
- pedido+="&num="+iQuantidade;
- strFiltroSite = oFiltroSite.value.trim()
- if (strFiltroSite!=""){
- pedido+="&as_sitesearch="+strFiltroSite;
- }
- seg_censura = oSelectSafety.value;
- pedido+="&safety="+seg_censura;
- recencia = oSelectRecency.value;
- bFiltrar = recencia!="any";
- if(bFiltrar)
- pedido+="&as_qdr="+recencia;
- document.location.href = pedido;
- }
Advertisement
Add Comment
Please, Sign In to add comment