从另一个域托管的另一个页面的body标签中获取文本 - javascript / Jquery

时间:2013-12-07 06:47:42

标签: javascript jquery html iframe

假设服务器上有一个网页 www.example.com/some.html 。现在我想从另一个域获取该页面的body标签内的内容。我该怎么做?我试图找到解决方案,但还没有运气。

以下是我思考和发现的一些方法。 第一个可以从同一站点获取标签的内容。

    $.get("link.html", function(data) {
    var html = $('<div>').html(data);
    var content = html.find("div#some_div_id").html();
    //do something
    $("#Container").html(content);
});

use .get() to get html of a div in another page

我试过了,但对我不起作用。我认为这是因为我的跨域请求。

第二个想法是使用iframe。想要将页面加载到iframe并提取body标签。但是找不到任何关于如何检测iframe完成加载页面的事件的解决方案?或者我如何从iframe加载页面获取内容?

任何人都可以告诉我如何以简单的方式从body标签中获取这些内容?有没有像我的第一个例子那样的解决方案?请帮忙......

4 个答案:

答案 0 :(得分:3)

这很有效。

var bodycontent;
$("<div>").load("link.html body", function (data) {
  bodycontent = data;
});

如果我是你,我会用服务器端的东西来做。这是因为许多网站使用Access-Control-Allow-Origin来阻止文件,并使您无法访问它们。这也是模仿和黑客行为的一种形式,因此请适度使用。

答案 1 :(得分:1)

如果没有服务器端代理来请求其他网站的内容,这是不可能的;由于原始策略相同,Javascript无法发出跨域请求。您不能仅使用iframe或AJAX服务器端代理执行此操作。

答案 2 :(得分:0)

试试这个

$.ajax({
       url: "your_url",
       data: dataToSubmit,
       async: false,
       success: function(response) {
            $('.your_div').html(response);
       }
});

你也可以使用加载

$('body').load("your_url");

答案 3 :(得分:0)

$.get("URL", function(data) {
  data = data.replace(/\n|\r|\t/gmi,'');
  /<body>(.*)<\/body>/i.test(data);
  data = RegExp.$1;
});

如果你想要解析HTML,使用正则表达式会更好