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

    Compatibilità funzione onclick

    Ciao a tutti.
    Scrivo sul forum perchè ho un problema di compatibilità che non riesco a risolvere.
    Dinamicamnete (con una query al dB attraverso una pagina PHP che mi restituisce un messaggio JSON) aggiungo (quindi alcuni elementi esistono già) ad un div delle immagini che contengono l'attributo onclick che richiama una funzione.

    questo è il codice jQuery che aggiunge le immagini:
    Codice PHP:
    $(window).load(function() {    
        
    // Click sul bottone del filtro
        
    $('#leftCol #search #submit').click(function() { 
            
    // Prelevo i valori dal form
            
    var searchColor = $('#search #color').val();
            var 
    searchArmor = $('#search #armor').val();
            var 
    searchGraphics = $('#search #graphics').val();
            
            $.
    getJSON("scripts/dbQueryFilter.php", {colorsearchColorarmorsearchArmorgraphicssearchGraphics}, function(data) { 
                $.
    each(data, function(i,item){
                    $(
    '<img />').attr("src""database/"+item.filename).attr("alt""preview").attr("onclick""showInfo('database/"+item.filename+"');").appendTo("#list");
                });
            });
        });
    }); 
    il codice che viene aggiunto (a parte l'ordine degli attributi) è uguale a quello già esistente:
    Codice PHP:
    [img]database/aaaa01.jpg[/img]
    ...
    [
    img]database/aaaa06.jpg[/img
    Imio problema è che con Firefox il codice funziona perfettamente, mentre safari e IE non sentono la funzione "onclick".
    Ho provato diversi suggerimenti trovati in giro per la rete come ad esempio aggiungere "javacscipt:" prima di "onclick" o utilizzare diversi tipi di "virgolette" (singole, doppie, ecc) ma non c'è nulla da fare, in nessun caso la funzione viene lanciata.

    Qualcuno sa spiegarmi dove sbaglio?
    Grazie.

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Ma la funzione showInfo dov'è? Nella pagina caricata tramite jquery o nella pagina principale?
    Hai provato ad inserire il click sul tag href invece che sull'immagine?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Ciao Andrea,
    La funzione showInfo è in un file .js caricato nella pagina dell'HTML attraverso:
    Codice PHP:
    <script type="text/javascript" src="./scripts/myscript.js"></script> 
    Non ho impostato nessun tag href ...

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Io ho fatto altre domande, rileggi e rispondi a quelle.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    La funzione showInfo(); è nella pagina principale, ho tutto nella stessa pagina.

    Per quanto riguarda la domanda sul tag href, non ho nessun tag href impostato, dici che dovrei provare una cosa del genere?

    Codice PHP:
    <a href onclick="showInfo('database/aaaa01.jpg');">[img]database/aaaa01.jpg[/img]</a
    Grazie.

  6. #6
    Nessuno sa aiutarmi?
    C'è qualche altra informazione che posso dare?

    Grazie.

  7. #7
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530

    Re: Compatibilità funzione onclick

    Originariamente inviato da giacomop81
    ... safari e IE non sentono la funzione "onclick".
    Aggiungi questi alert e vedrai che il primo parte anche con IE.

    [img]database/aaaa01.jpg[/img]

    Se non parte il secondo vuol dire che l' esecuzione dello script rimane bloccata nel corso della funzione o c'è qualche altra parte che blocca TUTTO lo script ma viene interpretata diversamente da browser a browser.
    Il fatto comunque, non è che safari e IE non sentano il gestore "onclick"

  8. #8
    Ti ringrazio per la risposta ma proprio ieri ho scoperto che il problema è la "cattiva" interpretazione de chain della riga:
    Codice PHP:
    $('<img />').attr("src""database/"+item.filename).attr("alt""preview").attr("onclick""showInfo('database/"+item.filename+"');").appendTo("#list"); 
    Alcuni browser aggiungono solo il primo "attr" ignorando gli altri, quindi l'evento onclick non era aggiunto.
    La soluzione è quindi usare un altro metodo per inserire il tag nella pagina.

    Grazie a tutti per il supporto

  9. #9
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    i gestori evento non sono attributi, sono gestori evento

    usa click o bind (o addirittura pianifica un live), come fanno tutti e non avrai sorprese

  10. #10
    Grazie per il consiglio, mi documenterò

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 © 2024 vBulletin Solutions, Inc. All rights reserved.