2011-03-08 80 views
4

everyone。 我創建了我的頁面,並使用IFrame插入到另一個頁面中。現在我試圖使用純JavaScript或jquery獲取插入頁面的整個文本。這是我現在有,但它不工作...從jquery獲取iframe的內容

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<script type="text/javascript" src="jquery-1.5.1.js"></script> 
<script type="text/javascript"> 
function getFrameContents(){ 
    return $("#myframe").contents().find('body'); 
} 
</script> 
</head> 

<form> 
<input type="button" value="CodingForums" onClick="window.alert(getFrameContents())" /> 
</form> 

<iframe id='myframe' src="http://www.fxstreet.com/rates-charts/currency-rates/" width="100%" height="300"> 
    <p>Your browser does not support iframes.</p> 
</iframe> 

</html> 

我讀過也有一些關於訪問不同的服務器頁面的政策。我如何正確地做到這一點?

回答

4

我讀過還有一些關於訪問來自不同服務器的頁面的策略。

是的,政策說這是嚴格禁止的。

我該如何正確地做到這一點?

在服務器端獲取它。您可能也想使用服務器端緩存。

+0

爲什麼被禁止?我只想讀取加載頁面的內容。我可以用巴斯來做,爲什麼我不能用js來做呢? – damluar 2011-03-08 13:15:23

+0

因爲你可以注入頁面,這意味着你可以將它重定向到任何你想要的地方,劫持它:) – Val 2011-03-08 13:46:44

+0

@damluar當攻擊者可以在頁面中執行腳本時,有一類稱爲XSS(跨站點腳本)的攻擊內容。通過這種方式,他們可以訪問cookie,會話數據等。 - 想象一下,您在隱藏的iframe中打開gmail.com並閱讀訪問者的電子郵件。 – vbence 2011-03-08 14:01:19

1

很多人問這個問題......

人形容的最好辦法是(因爲我不喜歡的I幀),但你需要在iframe來收集數據,並使用window.top....訪問主頁,它傳遞因爲所有瀏覽器都不支持.contents()