2013-03-10 35 views
0

我生成HTML內容並存儲在一個blob上,然後我需要在IFrame中顯示該內容。這個HTML一直是靜態HTML,但現在我的頁面使用了由第三方生成的JavaScript(它只作用於頁面本身)。在IE中,這個JavaScript在IFrame中被阻塞(這在Chrome中不是問題) - 因此我需要找到一個解決方案,以便IFrame中的內容不被阻止。發佈Azure blob內容的ASPX處理程序

我認爲的一種方法是使用CustomHandler進行處理。因此,我的處理程序可以處理以「/ blob」開頭的請求,然後從blob中下載內容(HTML頁面或圖像)並將其上載,以便瀏覽器看到它來自同一臺服務器。這是一個很好的方法嗎?

如果是,那麼ProcessRequest應該直接下載(HTML或圖像)並將其保存到context.Response.OutputStream(並相應地設置ContentType)。從blob獲取數據併爲其提供服務的最佳方式是什麼?

+0

如果您擁有並生成內容,爲什麼要使用iframe? – viperguynaz 2013-03-11 04:52:23

+0

我的網站設計要求將此內容顯示在自己的可滾動區域 – 2013-03-11 10:37:13

回答

0

請勿爲自己的內容使用iframe。如果你想有一個滾動區域,用CSS做:

.containerContentScroll { overflow: auto; height: 500px; scrollbar-base-color: #963; } 

而且,所有的Azure的BLOB內容可以通過URL引用,你可能只是做:

<iframe src="http://myblob.blob.core.windows.net/.../image.png /> 

最後,如果你需要的iFrame和跨域腳本,請參閱this SO post瞭解如何在MVC和此article on the XDomainRequest object中啓用它。

UPDATE - 剛發現Cross Origin Resource Sharing (CORS) via Access-Control-Allow-Origin header is a planned feature for Azure Storage - VOTE here

+0

感謝您的建議,但我不能使用div。這是因爲HTML由第三方組件生成,其中包括標記。每次重構HTML都會非常棘手。至於iframe src,這就是我現在正在做的事情,但問題是IE阻止了IFrame中的JavaScript,因爲它位於不同的域。 – 2013-03-11 15:58:40

+0

更新了有關XDomainRequest對象的信息 – viperguynaz 2013-03-11 16:36:37