2011-09-15 33 views
0

我已經接管了「儀表板」應用程序,顯示很多好吃的東西。使用的iframe保護頁的從腳本休息的第三方代理,在DIV

一個顯示的東西是由第三方網頁(其中自動刷新它自己的內容)的內容填充一個div。 不幸的是,導入的第三方網頁中的JavaScript會影響/刷新它所在的整個頁面。

有沒有一種方法,我可以顯示第三方網頁的自己的網頁上的內容,而在同一時間的沙箱,以防止它訪問/影響它位於頁面?

回答

1

我建議你使用iframe元素,並把div元素進去

+0

由於從我的問題的標題看到的,這就是我的想法樣-的。不過,我預計這裏會有更多。顯然不是。 – z5h

+0

如果該第三方網頁包含'

1

由於跨站點腳本的限制阻止您通過Ajax訪問外部資源,HTTP,你必須使用(內嵌)框架。

我只知道防止運行腳本框架的一種方式。儘管如此,Chrome不支持這種方法。

var untrusted = document.getElementById("iframe-3rd-party"); 
untrusted.designMode = "On"; //No script can be run from the frame any more. 

如果您發現的方法,以避免跨站點限制(例如:CORS, X-Access-Control-Allow),從碼帶腳本標記和事件處理程序。 :

//xmlhttp_responsestring holds the responseText property of the XMLHttpRequest object 
xmlhttp_responsestring 
    .replace(/<script[^>]*?>\s*\/\/\s*<\[CDATA\[[\S\s]*?]]>\s*<\/script\s*>/gi, "") 
    .replace(/<script[\S\s]+?<\/script\s*>/gi,"") 
    .replace(/ o([nN])/g," &#111;$1").replace(/ O([Nn])/g," &#79;"); 

所有的腳本標記,並且人的事件處理程序被剝奪了這種方式:以空格開始的所有字符,其次是「對」是由HTML實體取代。文本仍然可讀,而事件監聽器被禁用。

請注意,最後的代碼片段只有涉及腳本標記和事件處理程序。它不處理外部對象,如Java Applet和框架。請參閱我的other answer以獲得更高級的清潔功能。