开发者

Is it possible to use jQuery to grab the HTML of another web page into a div?

开发者 https://www.devze.com 2023-02-18 08:18 出处:网络
I am trying to integrate with the FireShot API to given a URL, grab HTML of another web page into a div then take a screenshot of it.

I am trying to integrate with the FireShot API to given a URL, grab HTML of another web page into a div then take a screenshot of it.

Some things I will need to do after getting the HTML

  • grab <link> & <script> from <head>
  • grab <body> into <div>

But 1st, it seems when I try to do a

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

I get a 200 in firebug colored red. I think it has to do with sites not allowing you to grab their page with JS? Then is opening a window the best I can do? But how might I control the other page with jQuery or call fsapi on that page?

UPDATE

I tried to do something like below to do something when the new window is ready, but FireBug says "Permission denied to access property 'document'"

w = window.open($url.val());
setTimeout(function() { // if I dont d开发者_开发知识库o this, I always get about:blank, is there a better way around this?
    $(w.document).ready(function() {
        console.log(w.document.body);
    });
}, 1000);


I believe the cross-site security setup within Javascript is basically blocking this. You'd likely have to proxy the content through your own domain.

There are a couple other options I think for break the cross-site security constraints, but I'm not sure I'd promote them.


If the "another page" locates within the same domain of your hosting page, yes, you can. Please refer to jQuery's $().load() API.

Otherwise, you're disallowed to do so by the browser's Cross-Site Security Policy. At this moment, you can choose to use iFrame instead of DIV.

Some jQuery plugins, e.g. thickbox provides ability to load pages to appropriate container automatically.


Unless I am correct, I do not believe you can AJAX a page cross domain (e.g. from domain1.com to domain2.com). To get around this, you can have a PHP "proxy" script that does the "getting" of the page and then pass it to JS.

For example, in JS you would get() http://mydomain.com/get/?domain=http://google.com and then do what you need to do!

0

精彩评论

暂无评论...
验证码 换一张
取 消