是否可以使用jQuery将另一个网页的HTML抓取到div中?

时间:2011-03-23 02:20:39

标签: javascript jquery

我正在尝试与FireShot API集成以提供URL,将另一个网页的HTML抓取到div中然后截取它的屏幕截图。

获取HTML后我需要做的一些事情

  • 抓住<link>&amp;来自<script>
  • <head>
  • 抓取<body>进入<div>

但是,1,当我尝试做

$.get("http://google.com", function(data) { ... });

我得到一个200的萤火虫红色。我认为这与网站不允许你用JS抓住他们的页面有关吗?然后打开一扇窗户我能做的最好?但是我如何使用jQuery控制其他页面或在该页面上调用fsapi?

更新

当新窗口准备就绪时,我尝试执行类似下面的操作,但FireBug说“权限被拒绝访问属性'文档'”

w = window.open($url.val());
setTimeout(function() { // if I dont do this, I always get about:blank, is there a better way around this?
    $(w.document).ready(function() {
        console.log(w.document.body);
    });
}, 1000);

3 个答案:

答案 0 :(得分:2)

我相信Javascript中的跨站点安全设置基本上阻止了这一点。您可能需要通过自己的域代理内容。

我认为还有其他一些选项可以打破跨站点安全限制,但我不确定是否会推广它们。

答案 1 :(得分:2)

如果“其他页面”位于您的托管页面的同一个域中,是的,您可以。请参阅jQuery的$().load() API。

否则,浏览器的跨站点安全策略不允许您这样做。此时,您可以选择使用iFrame而不是DIV。

一些jQuery插件,例如thickbox提供了自动将页面加载到适当容器的功能。

答案 2 :(得分:1)

除非我是正确的,否则我认为你不能跨页面跨域AJAX(例如从domain1.com到domain2.com)。为了解决这个问题,您可以使用PHP“代理”脚本来“获取”页面,然后将其传递给JS。

例如,在JS中你会得到()http://mydomain.com/get/?domain=http://google.com然后做你需要做的事情!