Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Focus condizionale (se elemento esiste)

    Ciao a tutti

    Sto cercando di creare uno script per Minimalist (chrome extension) per impostare automaticamente il fuoco su un certo elemento della pagina (input o pulsante) per evitare di dover ogni volta cliccare col mouse. Lo script deve essere uguale per tutto il sito (l'url di pagine diverse è lo stesso, sono step di un form POST).

    Ho quindi bisogno di un IF che sposti il fuoco a seconda che un elemento piuttosto che un altro esista nella pagina.

    Ho provato quanto segue:
    codice:
    if (document.getElementsByName("action:LoginStep1WithAssistCookie_display").item(0)) {document.getElementsByName("action:LoginStep1WithAssistCookie_display").item(0).focus();}
    else {document.getElementById("card-digits").focus();}

    ma sembra funzionare solo per il primo elemento, non per il secondo. Il secondo, da solo e fuori dall'IF, funziona a sua volta. Qualcuno riesce a capire dove sta il problema?

    Grazie a tutti!

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Premesso che non conosco e non sviluppo js per estensioni dei browser, ipotizzando che sia uguale e che abbia capito il problema, se gli elementi si chiamano tutti action:LoginStep1WithAssistCookie_display mi sembra ovvio che esisterà sempre un elemento 0 (zero) pertanto l'if non passerà mai a cercare l'elemento 1 (uno)
    Ultima modifica di cavicchiandrea; 24-05-2014 a 15:52
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Ciao cavicchiandrea

    Scusa, mi rendo conto di essermi espresso poco chiaramente. Il javascript è usato all'interno di una estensione del browser che aggiunge JS e CSS all'HEAD pagina. Il JS è quindi "normale".

    Le due pagine alle quali voglio applicare questo JS hanno indirizzo identico ma contenuti diversi (sono due pagine di un form POST multipagina). Per questo mi serve un JS con controllo condizionale.

    Nella prima delle due pagine l'elemento a cui voglio assegnare il focus è un bottone, non ha ID ma ha un name (action...display) per cui ho usato getElementByName.

    Nella seconda pagina (la successiva) l'elemento da focalizzare è un input text con ID (card-digits).

    Utilizzati singolarmente i due pezzi di codice sembrano funzionare, ma all'interno dell'IF no. Io vorrei che a seconda di quale dei due elementi sia presente nella pagina il medesimo ricevesse il fuoco.

    Grazie

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Credo che dovrai scorre gli elementi (input) con un ciclo quando trovi il bottone con quel nome gli passi il fuoco altrimenti prosegui fino al text tutto questo alla onload di pagina
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Purtroppo non ho la possibilità di aggiungere niente a BODY, l'estensione permette solo di inserire JS nell'HEAD. C'è una ragione per cui questo IF non funziona? I due pezzi di codice per dare il fuoco funzionano individualmente (uno alla volta) fuori dall'IF e il primo IF (quello del bottone) funziona da solo. È l'ELSE che non riesco a far funzionare.

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Scusa ma cosa centra il body puoi eseguire un onload anche da codice js onload=function(){.....} Se non funziona un motivo ci sarà, il perché non funziona, forse perché richiami oggetti non ancora presenti nella pagina o per altri motivi
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    A quanto pare il problema era nel loading. Ho trovato e modificato del codice per eseguire il JS alla fine del caricamento della pagina e ora tutto (compreso l'IF) sembra funzionare bene. Ecco il codice funzionante:

    codice:
    function setFocus() {
        if (document.getElementsByName("action:LoginStep1WithAssistCookie_display").item(0)) {
            document.getElementsByName("action:LoginStep1WithAssistCookie_display").item(0).focus();
        }
        else if (document.getElementById("card-digits")) {
            document.getElementById("card-digits").focus();
        }
    }
    
    if (window.addEventListener)
        window.addEventListener("load", setFocus, false);
    else if (window.attachEvent)
        window.attachEvent("onload", setFocus);
    else window.onload = setFocus;

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.