2009-08-20 15 views
5

Mam adres URL strony zdalnej z innej domeny, którą muszę pobrać, przeanalizować i zaktualizować DOM bieżącej strony. Znalazłem przykłady robienia tego przy użyciu nowego ActiveXObject ("Msxml2.XMLHTTP"), ale to jest ograniczone do IE, jak sądzę, i przy użyciu nowego java.net.URL, ale nie chcę używać Javy . Czy są jakieś alternatywy?Jak uzyskać zawartość strony zdalnej z JavaScript?

+0

Czy kontrolujesz inną domenę? –

+0

@Darko Z Nie, ja nie – Vitaly

Odpowiedz

3

Ta sama polityka domeny Cię zainteresuje.

1) Proxy przez serwer. przeglądarka-> twój serwer-> ich serwer-> twój serwer-> przeglądarka.

2) Użyj lampy błyskowej lub silverlight. Trzecia strona musi dać ci dostęp. Most między javascript i flash nie jest świetny dla dużych ilości danych i są błędy. Silverlight nie jest tak powszechny jak flash ...

3) użyj znacznika. To naprawdę nie jest bezpieczne ... Działa tylko wtedy, gdy zawartość strony trzeciej jest prawidłowym javascript.

+0

Czy bookmarklet działa lokalnie podlegałby takim samym ograniczeniom? –

-1

Obiekt XMLHTTPRequest jest wspólny dla większości nowoczesnych przeglądarek i jest mocny dla aplikacji internetowych AJAX.

+0

powiedział na innej domenie ... –

+0

Jeśli stworzą standard, możliwe, że www.datejs.com może nadal używać AJAX do tego ... choć nie polecam go ... –

2

Co z ładowaniem skryptu PHP za pośrednictwem AJAX, który ma file_get_contents()? Powinno to działać w przypadku innej domeny. Jeśli rozumiem poprawnie.

+0

To właśnie sugeruje Steve Brewer. Ale wolałbym unikać używania proxy, jeśli to możliwe. – Vitaly

1

Napisanie skryptu po stronie serwera, który pobierze zawartość strony, jest drogą do zrobienia. Możesz użyć obiektu XMLHttpRequest, aby wywołać AJAX do tego skryptu, który po prostu przetworzy wszystkie html (?).

Mimo to odradzam. Nie wiem dokładnie, jak bardzo ufam drugiej stronie, ale ta sama polityka pochodzenia istnieje z jakiegoś powodu. Co dokładnie próbujesz zrobić? Zwykle istnieje obejście.

+0

Polityka tego samego pochodzenia jest sposobem zabezpieczenia. Czy inna witryna ma interfejs API? –

+0

Google Finance API nie zapewnia sposobu na uzyskanie notowań giełdowych, jednak jak wspomniano tutaj http://stackoverflow.com/questions/527703/google-financial-api-how-get-stock-quotes jest sposób na uzyskanie cytaty takie jak to: http://finance.google.com/finance/info? q = GOOG – Vitaly

+0

Próbujesz pobrać notowania giełdowe z Google Finance? Pomaga dokładnie wyjaśnić, co zamierzasz osiągnąć :-) – JorenB

0

Nie sądzę, że można to zrobić zgodnie z ograniczeniami polityki tego samego pochodzenia. Dwie komunikują się między dwiema domenami za pomocą iframe również możemy użyć kodu JS, ale obie domeny muszą mieć w sobie kod komunikacyjny. Ramka Child może kontaktować się z ramką (oknem) dziadka, ale nie tutaj.

Odkąd odwołujesz się do jakiegoś adresu URL, który jest wszystkim posłańcem.

Jedynym sposobem jest zrobienie tego przy użyciu kodu po stronie serwera w celu uzyskania dostępu do zawartości w innej domenie.

0

Wystarczy użyć PHP:

<?php 
$url = "http://www.domaintoretrieve.com"; 

ob_start(); 
include_once($url); 

$html = ob_get_contents(); 
ob_end_clean(); 

?> 

$ html zawiera całą stronę do manipulowania, ile potrzeba.

Powiązane problemy