2009-07-17 13 views
1

別のドメインでホストされているHTMLをどのように読み込むことができますか?js:別のドメインのページのHTMLをロードする

私はJavaScriptを使用しており、外部HTMLを解析できるブックマークレットを作成したいと考えています。私は無駄に時間グーグルされている

は...

答えて

3

ダウンロードJavaScriptをクロスドメインリクエストを行うことが許可されていません。大きなセキュリティリスクです。代わりに、サーバー上でスクリプトを実行し、結果をJavaScript関数に返さなければなりません。

JavaScriptがサーバー上にあるページ(またはスクリプト)にAjaxリクエストを開始:あなたは、セットアップアプリケーションがこのように動作するようにできJavaScriptとPHPを使用していると仮定して例えば

、。必要なパラメータをこのページに渡します。次のコードはjQuery(簡潔にするため)に基づいていますが、原則はフレームワークに関係なく同じです。

var sParameters = " ... " // this is defined by you 
$.ajax({ 
    url: 'your-server-side-code.php', 
    processData: false, 
    data: sParameters, 
    success: function(sResponse) { 
    // handle the response data however you want 
    } 
}); 

サーバー側コードは、要求に応答し、必要なパラメータをクロスドメインWebサイトに渡します。 PHPのcURL libraryはこれに適しています。

// very contrivuted cURL configuration for purposes of example... 
$curl_connection = curl_init(); 
$str_url = "http://you-url.com"; 
curl_setopt($curl_connection, CURLOPT_URL, $str_url); 
curl_setopt($curl_connection, CURLOPT_GET, 1); 
// ... keep setting your options ... 
$str_response = curl_exec($curl_connection); 
curl_close($curl_connection); 

クロスドメインのWebサイトが応答すると、サーバー側のコードは応答を最初の要求に戻すことができます。これはおそらく応答する前に検証する必要がありますが、これは単なる例です。

print_r($str_response); 

JavaScriptレスポンスハンドラ関数は、受信したレスポンスデータを解析できます。上記のJavaScriptコードの最初のブロックのsuccess関数に注意してください。

+0

注意。 – MSalters

+0

私はカールが有効なサーバーを持っていないと恐れています。 –

0

他のページを所有していない場合は、非常に難しいでしょう。

実際、javascriptで別のドメインにリクエストすることはできません。あなたが作成することができ、他のサイトを所有して(私が言ったように)この目的は、他のドメインからデータをロードする場合

<script type="text/javascript" src="http://otherdomain.com/script.js"></script> 

、そして:あなたがすることができる唯一のことは、別のドメインからスクリプトをロードしていますオリジナルのサイトに必要なデータを読み込むscript.jsファイル。

これはデリケートなことであり、スクリプト内に何があるかを知っている場合にのみ実行する必要があります。

0

localhostからドメイン間の要求を行うことはできますが、このコードをサーバーに展開する予定がある場合は機能しません。ブックマークレットを開発しているので、これを行うことができると思います。

リモートHTMLを取得するには、AJAXを使用する必要があります。このページには、サーバーからアクセスできないときの痛みであることを

jQueryライブラリは、このように、このタスクは同じくらい簡単になります...

$.get("http://www.google.com", function(html) { alert(html); }); 
+0

ありがとうございますが、google.comにアクセスしてブックマークレットを実行した場合にのみ動作します –

関連する問題