2011-03-23 81 views
0

我正在嘗試與FireShot API集成以提供一個URL,將另一個網頁的HTML抓取到一個div中,然後截取它。是否有可能使用jQuery將另一個網頁的HTML抓成div?

有些事情,我需要得到HTML

  • <link> & <script><head>
  • <body><div>

但1日以後的事,似乎當我嘗試做a

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

我得到一個200瓢蟲紅色。我認爲這與網站不允許你用JS抓取他們的頁面有關?然後打開一扇窗戶,我可以做的最好?但我怎麼可能用jQuery控制其他頁面或者在頁面上調用fsapi?

UPDATE

我試圖做類似下面做一些事情時,新的窗口已準備就緒,但螢火說:「訪問被拒絕訪問屬性‘文件’」

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); 
+0

正如幾個人已經回答的那樣,這被網絡瀏覽器明確禁止。 JavaScript不能用於訪問不同域上的內容。瀏覽器不僅可以通過Ajax阻止這些嘗試,還可以阻止JavaScript代碼嘗試讀取其他框架或窗口的內容(如果其中包含來自其他域的內容)。 – 2011-03-23 02:41:57

回答

2

我相信Javascript中的跨站點安全設置基本上阻止了這一點。您可能需要通過自己的域代理內容。

我認爲有一些其他選擇可以打破跨站安全限制,但我不確定是否會推廣它們。

1

除非我是正確的,否則我不認爲你可以AJAX頁面跨域(例如從domain1.com到domain2.com)。爲了解決這個問題,你可以有一個PHP代理腳本來完成頁面的「獲取」,然後把它傳遞給JS。

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

+0

嗯我認爲多數民衆贊成在1選項,我認爲這將是最好的只是使用JS,如果可能的話,會快得多 – 2011-03-23 02:37:25

2

如果「其他頁面」位於託管頁面的相同域中,那麼可以。請參閱jQuery的$().load() API。

否則,瀏覽器的跨站點安全策略不允許您這樣做。此時,您可以選擇使用iFrame而不是DIV。

一些jQuery插件,例如thickbox提供了自動將頁面加載到適當容器的功能。

相關問題