2015-10-20 16 views
0

我不知道這是一個簡單還是複雜的問題(或者之前有問題)。我試圖在瀏覽器中打開一個網頁,並說google.com,然後使用jquery抓取/修改這些元素。這裏是我下面的代碼:在打開的窗口上使用jquery函數

$scope.populateUrl = function() { 

    var openWindow = function() { 
     return $q(function (resolve, reject) { 
      resolve(window.open('https://www.google.com')) 
     }) 
    } 

    openWindow().then(function (wnd) { 
     console.log(wnd.document) 
     var inputs = wnd.document.getElementsByTagName('input') 
     console.log(inputs) 
    }) 
} 

我覺得這應該是一個非常簡單的問題,但是當我的控制檯日誌wnd.document我得到:

#document 
    <html> 
    <head></head> 
    <body></body> 
    </html> 

而且輸入變量爲空。不應該wnd.document是谷歌的HTML?如果它有所作爲,我爲此項目使用Node。

+0

您需要等待頁面加載。另外我不知道你是否能夠互動,因爲它們是不同的領域。不知道有沒有嘗試過的年齡。 – Vince

+0

這就是我試圖通過將它包裝在$ q承諾中所做的事情。我想知道$ q如何知道另一個窗口何時完成加載,我真的不能想到一個答案。有沒有辦法讓$ q等待另一個窗口? – JN18

+0

我知道我以前用'iframe'做過這個。不知道這是否有幫助,但只是一個頭。 – Sam

回答

0

正如我可以從$scope明白你正在寫angularjs在客戶端。

您正試圖使用​​用戶的cookies從您的網站獲取google.com。那麼爲什麼不收到paypal.com後,看看你的用戶的餘額是什麼或做一些轉移?如你所知,如果這是可能的,將會導致巨大的安全問題。

無論如何,你正在嘗試做的事情是不可能的。

你可以嘗試發送一個獲取請求到你想要的網站,如果這個網站允許它通過訪問控制允許來源你可以得到你想要的迴應。

雖然如果你只是想刮掉一個網站,並從它得到一些數據,你應該做它的服務器端。有幾個模塊可以這樣做:https://github.com/cheeriojs/cheerio 或整個程序製作的具體內容:http://docs.casperjs.org/en/latest/quickstart.html