3

私のプロジェクトは、私のウェブサイト内にいくつかのウェブサイトのプレビューを表示することです。私は今のところ Iframe を使用してウェブサイトのプレビューを読み込んでおり、ユーザーは Iframe 内で対話できます。

SEOの目的で、Iframeの実装をページ内に変更する必要があるため、代わりになるのはJquery .load()関数です。

$('div#websitePreview').load('Website_URL');

しかし、問題は、ユーザーがWebサイトと対話する(リンクをクリックする)と、ページ全体が新しいリンクにリダイレクトされるため、同じdivでユーザーがクリックしたページを、離れずにajax呼び出しでロードする方法があります私のウェブサイト?

更新: プレビューしようとしている Web サイトには、元のサイトのサブドメインがあります

4

3 に答える 3

3

最新のブラウザーではドメイン間のセキュリティ制限があるため、これを実現する方法はありません。ajax 経由で他のドメインのコンテンツにアクセスすることはできません。

もう 1 つのポイントは、読み込まれた css がサイトの css をオーバーライドするため、サイトの div にエントリ ページを読み込むと css バグが発生する可能性があることです。

于 2013-06-24T08:43:34.330 に答える
1

「プレビュー」している Web サイトが Web サイトと同じドメインにあると仮定するとa、ロードされた内のすべてのタグを修正divして、次のコードで AJAX 要求を実行できます。

var $container = $('#websitePreview')
$container.load('http://www.example.com'); // initial load

// link click within loaded content.
$container.on('click', 'a', function(e) {
    e.preventDefault();
    $container.load($(this).attr('href'));
});

一方、プレビューされたサイトが別のドメインにある場合、Same Origin ポリシーにより、それらのサイトから HTML を読み込むことができません。このiframeような状況では、または CORS リクエストが唯一のオプションであり、URL がサード パーティの場合、後者が発生する可能性は非常に低くなります。

于 2013-06-24T08:43:01.397 に答える
0

試す

$('div#websitePreview a').live('click', function(event){
   event.preventDefault();
   var url = $(this).attr('href');
   $('div#websitePreview').load(url);
}
于 2013-06-24T08:41:16.963 に答える