2016-03-25 12 views
5

理由は何でも、それは重要ではありません。私はGoogleショッピングをiframe経由で別のページと組み合わせようとしています。Google検索結果ページにiframeを埋め込む方法

hereというGoogleのカスタム検索クエリをiframeに組み込む方法を試しましたが、Googleカスタム検索ではショッピングタブにアクセスできません。

Googleを埋め込むことができない場合は、自分自身に埋め込みます。だから私は、ページ内のいくつかのjQueryを注入するために進め

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(); 

私はのdiv#検索

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

のiframeを作成し、注入の内側、つまりHTMLを必要なものにGoogleショッピングの検索結果ページをクリーンアップそれ:

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

iframeはページの内容を読み込まないので、空白です。上のスニペットを他のページで試してみると、うまく動作します。 Googleがiframeの読み込みをブロックしているようです。どのように私はそれを回避することができますか?

+0

Googleの検索結果は、iframe内に作業することはできません。 –

答えて

3

Googleはiframeを使用していないようです...あなたがJSを使用していない場合でも。 代わりに使用するべきはGoogle Custom Search APIです。カスタム検索エンジンを作成することができます。 サンプルウェブサイトを入力するだけで、オプションをすべてのウェブを検索するように変更する必要があります。入力したウェブサイトを再度削除してください。 カスタム検索エンジンを作成するには、Googleアカウントが必要です。 開始here

+0

あなたのお返事ありがとう@RoiEX。 2つの問題:カスタム検索では[ショッピング]タブにアクセスすることはできません。代わりにiframeをGoogleショッピングに埋め込む方法もあります。 – Andres

2

私はそのコードを実行すると、以下のエラーが私のコンソールで報告されています

VM259:7混在したコンテンツ:「https://www.google.co.uk/?gws_rd=ssl」のページがHTTPSでロードされますが、安全でないリソース「http://example.com/」を要求しました。 。このリクエストはブロックされました。 HTTPS経由でコンテンツを配信する必要があります。

HTTPSのURLにそれを変更する:

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

(それはロゴの後ろに隠れていえ)...それは正常に動作します:

screenshot

2

TNX @Quentinsにコメントを。

UPD:

は、Googleのウェブサイトにコードを埋め込む:一般的に

を自分が所有していないページのコードを埋め込むことはできません。

ユーザーがあなたのウェブサイトを開き、別のタブをGoogleで開くか、あなたのウェブサイトがGoogleと別のタブを開くと、あなたのウェブサイトはGoogleウェブサイトのソースコード/コンテキストにアクセスできず、互いに完全に隔離されている。

結果を整理し、iframeをブラウザコンソールで行ったGoogleページに埋め込むための操作が表示されます。その変更はブラウザにのみ影響し、Googleウェブサイトを開いている他のユーザーには影響しません。

考えられる解決策

実は、あなたが他のページにいくつかのコードを埋め込むことができますが、あなたが使用する必要があります。

  • Browser extensions(複雑すぎる、ユーザーがブラウザのためのあなたの拡張機能をインストールする必要がありますので、 )
  • XSS /他の脆弱性(これはほとんどGoogle検索ウェブサイトでは不可能です)

ページにグーグルを埋め込む:

あなたはgoogle.comのHTTP応答であるためx-frame-optionsヘッダは、Googleからのiframeを埋め込むことはできません。良い回避策はありません、申し訳ありません。

X-フレーム・オプションHTTPレスポンスヘッダは、ブラウザが<frame>、又は<object>でページをレンダリングするために許可されるべきかどうかを示すために使用することができます。サイトはこれを使用して、コンテンツが他のサイトに埋め込まれていないことを確認して、クリックジャック攻撃を回避します。

enter image description here

+0

だから?その質問は、その結果ページをフレームに表示する方法ではなく、Googleの検索結果ページにiframeを挿入する方法を尋ねています。 – Quentin

+0

ありがとう、クエンティン、あなたは正しいです。更新された答え。 –

+0

あなたはまだ質問に答えていません。 「他の人のサイトでJavaScriptを実行するにはどうすればよいですか?」という質問には答えましたが、OPは既にそれを達成しています。彼らはあなたが触れていない特定の問題を抱えていました。 – Quentin

関連する問題