2011-10-01 71 views
0

我有第三方生成的框架集(來自幫助系統),我可以將代碼添加到具有我的內容頁的子框架中。我無法修改其他框架集內容,因爲它是由構建過程生成的。如何在另一個框架中創建一個功能?

我可以在我的每個HTML內容頁面上都有一些js代碼myhandler()加載到子框中。這個myhandler()被觸發,當一個動作發生在頂部幀時被調用。

我想在子幀中創建函數,但它擁有父(頂部)框架,所以它只創建一次,這意味着我可以測試如果top.myhandler已經設置,如果是的話,它只是重用它。

當子幀加載了不同內容的HTML時,在父操作觸發對其的調用時,以前的內容頁面中創建的myhandler()函數不再可訪問。

這是可能的一個框架的JavaScript在另一個框架中創建一個功能?或者還有其他解決方案嗎?

回答

0

跨框架javascript有1個條件:所有涉及的頁面(在不同的框架中)需要在同一個域上。如果網頁位於不同的網域或子網域 - 爲了安全起見,跨幀JavaScript訪問將受到限制。

讓假設你有一個2個頁面的框架:index.html,然後index2.html

如果這些頁面在同一領域 - 它們將共享同一個JavaScript的命名空間,即所有的JavaScript庫鏈接索引。 html可以從index2.html訪問,反之亦然。

如果頁面位於同一個域的不同子域上 - 可以分幾個層次。例如:

frame1 contains: http://myrepo.site.com/index.html 
frame2 contains: http://another.site.com/index2.html 

你可以爲這兩個(在JavaScript)設置:document.domain = "site.com" 之後 - 兩個頁面上的JavaScript代碼將開始seing對方,同這些頁面都在同一個域。

相關問題