2016-03-25 20 views
5

Per qualsiasi motivo, non è importante, sto cercando di combinare lo shopping di google con un'altra pagina tramite un iframe.Come si può incorporare un iframe in una pagina dei risultati di ricerca di Google

Ho provato l'approccio proposto here, che consiste nell'incorporare una query di ricerca personalizzata di Google in un iframe, ma la ricerca personalizzata di Google non consente l'accesso alla scheda dello shopping.

Ho pensato, se non è possibile incorporare Google, incorporarvi. Così ho provveduto a iniettare qualche jQuery nella pagina

var jq = document.createElement('script'); 
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"; 
document.getElementsByTagName('head')[0].appendChild(jq); 
// ... give time for script to load, then type. 
jQuery.noConflict(); 

ripulire la pagina dei risultati di ricerca dello shopping google per quello che mi serviva, vale a dire il codice html all'interno del div # ricerca

jQuery(function($) {$('#search').show().parentsUntil('body').andSelf().siblings().hide();}); 

Creare un iframe e iniettare iT:

var iframe = document.createElement('iframe') 
iframe.src="http://example.com" 
iframe.width="100%"; 
iframe.height="500"; 
iframe.style="visibility:visible"; 
document.body.appendChild(iframe) 

l'unico problema è l'iframe non viene caricato il contenuto della pagina e, a sua volta è vuota. Se provi lo snippet sopra riportato in qualsiasi altra pagina, funziona. Sembra che Google stia bloccando l'iframe dal caricamento. Come posso aggirarlo?

+0

Google risultato di ricerca non può funzionare in IFrame. –

risposta

3

Google sembra non funzionare utilizzando un iframe ... Anche se non si utilizza JS. Quello che dovresti usare è lo Google Custom Search API, che ti consente di creare un motore di ricerca personalizzato. Devi solo inserire un sito web di esempio, cambiare l'opzione per cercare tutto il web. e rimuovere di nuovo il sito Web inserito. Per creare un motore di ricerca personalizzato è necessario un account google. Inizio here.

+0

Grazie per la tua risposta @RoiEX. Due problemi: la ricerca personalizzata non ti consente di accedere alla scheda "Shopping" e l'alternativa era incorporare un iframe in Google Shopping. – Andres

2

Quando eseguo il codice, il seguente errore viene segnalato nella mia console:

VM259: 7 contenuto misto: La pagina all'indirizzo 'https://www.google.co.uk/?gws_rd=ssl' stato caricato tramite HTTPS, ma ha richiesto una risorsa insicuro 'http://example.com/' . Questa richiesta è stata bloccata; il contenuto deve essere pubblicato su HTTPS.

a cambiarlo con un URL HTTPS:

var iframe = document.createElement('iframe') 
iframe.src="https://example.com" 
iframe.width="100%"; 
iframe.height="500"; 
iframe.style="visibility:visible"; 
document.body.appendChild(iframe) 

... lo fa funzionare bene (anche se è nascosto dietro il logo):

screenshot

2

Tnx per @Quentins commento.

UPD:

Incorporare codice al sito web di Google:

In generale non è possibile incorporare il codice per la pagina che non si possiede.

se l'utente apre il tuo sito web e apre un'altra scheda con google o il tuo sito web apre un'altra scheda con google, il tuo sito web non ha accesso al codice sorgente/contesto del sito web google e non può influire sul sito web google, perché lì sono completamente isolati gli uni dagli altri.

Sembra che le tue azioni per la pulizia dei risultati e l'incorporamento del tuo iframe in google pagina hai fatto in la tua console del browser. Le modifiche riguardano solo localmente il tuo browser e non influiscono su altri utenti che aprono il sito web di Google.

Possibili soluzioni:

In realtà, è possibile incorporare il codice per altre pagine, ma è necessario utilizzare:

  • Browser extensions (troppo complicato, perché l'utente deve installare l'estensione per il browser)
  • XSS/altri vulnerables (che è quasi impossibile per il sito web di ricerca di Google)

Incorporare Google alla tua pagina:

Non è possibile incorporare iframe di Google a causa di x-frame-options intestazione di risposta HTTP per google.com. Non c'è una buona soluzione, mi dispiace.

L'intestazione di risposta HTTP X-Frame-Options può essere utilizzato per indicare se un browser dovrebbe essere consentito di rendering di una pagina in un <frame>, o <object>. I siti possono utilizzarlo per evitare attacchi di tipo clickjacking, garantendo che il loro contenuto non sia incorporato in altri siti.

enter image description here

+0

Quindi? Questa domanda sta chiedendo come iniettare un iframe in una pagina dei risultati di ricerca di Google, non come visualizzare la pagina dei risultati in una cornice. – Quentin

+0

Grazie, Quentin, hai ragione. Risposta aggiornata –

+0

Ancora non stai rispondendo alla domanda. Hai risposto alla domanda "Come faccio a eseguire JavaScript sui siti di altre persone?", Ma la domanda mostra che l'OP ha già raggiunto questo obiettivo. Hanno avuto un problema specifico su cui non ti sei accennato. – Quentin

Problemi correlati