2013-08-02 31 views
0

希望我問這正確的注射..我如何獲取JavaScript ouside的iframe在全球範圍內執行

這裏是我的情況:我 有HTML運行的iframe,使控制器的呼叫取回內在它引用的JavaScript文件中的觀點..

所以.. 主頁:

<html> 
<body> 
<iframe src="page2.html" /> 
</body> 
</html> 

page2.html:

<html> 
<body> 
<script> 
$.ajax({ 
    url: "controller\myview", 
    type: "POST", 
    data: null, 
    dataType: "html" 
}).done(function(view) { 
var body = $(window.top.document.body); 
body.append(view); 
}); 
</script> 
</body> 
</html> 

myview發回一個典型的,但在它的底部有一個標籤,創建一個窗體的對話框。這裏的要點是在iframe之外獲得jquery ui對話框,當我檢查DOM時,它在iframe之外;然而,當現在在主頁上執行的JavaScript似乎認爲它是在iframe中。

它看起來像我有一個範圍問題,但我不知道如何解決它。我曾希望,如果我把腳本標籤放在主頁上,它會將範圍限制在iframe之外,我甚至試圖將範圍文件移動到頭標籤上,但沒有運氣..

有什麼建議嗎?

回答

1

當你可以在你的主頁面上進行ajax調用時,你如何獲得一個對ajax調用controller/myview的頁面的iFrame?如果你在你的主html頁面進行ajax調用,你可以在它自己的範圍內處理它,它可以消除整個範圍問題,並且在你處理時可以擺脫冗餘的iFrame。對不起,如果我誤解了你的問題,這有點令人困惑。

+0

因此,目前網站的設置方式是在MVC網站託管的iframe中包含的經典asp中編寫的項目列表。 janky我知道,但我試圖避免重新編碼該頁面。項目詳細信息是在MVC中構建的,並在單擊超鏈接時通過jQuery Ajax調用進行調用。所以,爲了得到一個對話框,然後顯示經典的asp頁面在iframe外部返回的視圖,我必須將部分視圖注入父容器,然後調用jquery ui的對話框方法。這是我的問題在哪裏.. –

+0

,我希望我可以更好地說出這個問題.. –

+0

快速的問題,與項目詳細信息與主頁面域相同的域? –

0

是window.top ...真的把你帶到父母身邊嗎?
請參閱How to access parent Iframe from javascriptJavaScript dynamically loaded into iframe runs in parent scope瞭解更多評論/代碼。

另外請記住,你不能從iframe獲取數據給父母 - 如果你可以有辦法註冊mybank.cn並讓它在iframe中加載mybank.com獲取所有空間,然後竊聽mybank .com在iframe中。

+0

我看到很多關於將JavaScript加載到iframe的文章,當您創建它時;我想要做的是從內部加載一個iframe外部的iframe。不幸的是,當我這樣做結束了執行JavaScript,就好像它仍然在iframe中。 –