js: загрузка html страницы из другого домена - PullRequest
1 голос
/ 17 июля 2009

Мне было интересно, как я могу загрузить HTML, который размещен на другом домене?

Я использую JavaScript и хочу создать букмарклет, который позволит мне анализировать внешний HTML.

Я часами гуглял напрасно ...

Ответы [ 3 ]

5 голосов
/ 17 июля 2009

JavaScript не позволяет создавать междоменные запросы. Это большой риск для безопасности. Вместо этого вам придется выполнить скрипт на сервере и заставить его возвращать результаты в вашу функцию JavaScript.

Например, если вы используете JavaScript и PHP, вы можете настроить приложение для работы следующим образом:

JavaScript инициирует Ajax-запрос к странице (или скрипту), расположенному на вашем сервере. Он передает все необходимые параметры на эту страницу. Следующий код основан на 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
  }
});

Код на стороне сервера ответит на запрос и передаст необходимые параметры на междоменный веб-сайт. PHP cURL библиотека хороша для этого.

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

Когда междоменный веб-сайт отвечает, ваш код на стороне сервера может повторить ответ на первоначальный запрос. Это, вероятно, должно быть проверено, прежде чем ответить, но это только пример.

print_r($str_response);

Функция обработчика ответа JavaScript может затем анализировать входящие данные ответа. Обратите внимание на функцию успеха в первом блоке кода JavaScript выше.

0 голосов
/ 17 июля 2009

Вы можете делать междоменные запросы от localhost, но если вы планируете развернуть этот код на сервере, он не будет работать. Поскольку вы разрабатываете букмарклет, я думаю, вы можете сделать это.

Вам понадобится AJAX , чтобы получить удаленный HTML.

Библиотека jQuery делает эту задачу такой простой, как эта ...

$.get("http://www.google.com", function(html) { alert(html); });
0 голосов
/ 17 июля 2009

Если у вас нет другой страницы, это будет очень сложно.

На самом деле, вы не можете сделать запрос к другому домену в javascript. Единственное, что вы можете сделать, это загрузить скрипт из другого домена:

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

Если цель этого состоит в том, чтобы загрузить данные из другого домена, и (как я уже сказал) у вас есть другой сайт, вы можете создать файл script.js, который будет загружать данные, которые вам нужны на вашем исходном сайте.

Помните, что это деликатная вещь, и делать это нужно только в том случае, если вы знаете, что будет в сценарии.

...