2015-04-03 14 views
5

sto usando la pagina sottostante per creare un widget Pinterest Profilo: https://business.pinterest.com/en/widget-builder#do_embed_userFai Pinterest Profilo Widget Fissare

Il problema è che quando il widget mostra le immagini utilizzano collegamenti non sicuri. Devo visualizzare il widget su una pagina sicura, quindi è necessario che siano https: //

Qualche idea su come posso procedere?

+0

la sua pagina web http ' : // 'o' https: // '? –

+0

L'intero sito è https: // – a1anm

risposta

1

Ok, quindi dopo un po 'di ricerche ho fatto un trucco piuttosto intenso per fare questo lavoro. Pintrest pubblica contenuti https, è solo che per qualche ragione non l'hanno incluso nella loro API. Così ho passato l'API e ho trovato il setter di attributo che imposta gli attributi su tutti gli elementi creati dall'API.

comunque .. Ecco il violino: https://jsfiddle.net/nanff007/1/ (assicuratevi di https)

E qui è il codice che esegue la magia ...

Si tratta di una soluzione/hack o qualsiasi cosa tu voglio chiamarlo Non funzionerà per sempre. Potrebbe anche non funzionare in tutti i paesi in quanto gli akamai potrebbero cambiare. L'opzione migliore sarebbe sollevare un ticket di richiesta con Pintrest.

(function() { 
    $('a[data-pin-do]').each(function() { 
     $(this).attr('data-pin-dont', $(this).attr('data-pin-do')); 
     $(this).removeAttr('data-pin-do'); 
    }); 

    var timer = setInterval(function() { 
     for (prop in window) { 
      if (prop.search(/^PIN_/) > -1 && typeof window[prop] != 'boolean') { 
       clearInterval(timer); 
       window[prop].f.set = function (el, att, string) { 
        if(att == 'src' && el.tagName.toLowerCase() == 'img') { 
         string = string.replace(/(^http:\/\/)/i, "https://s-"); 
        } 

        if (typeof el[att] === 'string') { 
         el[att] = string; 
        } else { 
         el.setAttribute(att, string); 
        } 
       }; 

       $('a[data-pin-dont]').each(function() { 
        $(this).attr('data-pin-do', $(this).attr('data-pin-dont')); 
        $(this).removeAttr('data-pin-dont'); 
       }); 

       window[prop].f.init(); 
       break; 
      } 
     } 
    }, 100); 
}()); 
+0

Sfortunatamente sembra che Pinterest abbia rotto questo hack oggi o ieri. –

+0

@KyleMacFarlane Ho appena controllato il mio jsfiddle e sembra che stia funzionando ... che problema stai avendo? –

+0

Ho usato il tuo trucco per mesi e funzionava bene fino ad oggi. Tuttavia sono riuscito a risolverlo cancellando la cache nei browser interessati. Quello che sarebbe accaduto era che il widget non sarebbe riuscito a inizializzare e la console ha registrato un gruppo di 404 in "/https://log.pinterest.com" (notare la barra all'inizio). La domanda è: Pinterest basta testare A/B o lanciare un nuovo script? –

0

è sufficiente rimuovere la https: // e iniziamo con l'inizio del collegamento. Per esempio:

< a href = "// sub-domain.example.com"> Acme Widget

Rimuovere gli spazi prima> e dopo < nell'esempio di cui sopra

+0

Questo non funziona con il widget Pinterest. – a1anm

+0

https://www.pinterest.com/pinterest/ usa https invece di http sperare che funzioni –

Problemi correlati