框架之間的通用
如果你是在框架的環境中工作的,你可能需要在框架之間有腳本可以通用,無論是讀還是寫,或者在不同的文檔中調用某些功能。
如果你可以選擇是否使用框架,我強烈建議你不要這麼做,因為他們有很多嚴重的使用和相容性的問題(他們在流覽器狀態內創建無法寫入的內容),但是隨著你對彈出視窗的使用,在有些情況下你可能無法選擇是否使用框架,所以如果你必須要用框架,你可以參考下面的內容。
解決方法
讓我們首先來看一個非常簡單的框架文檔的例子:
跨框架腳本(cross-frame scripting)可以使用四種方法:
□ window或者self指向當前的框架網頁
□ parent指向包含當前網頁的框架的網頁
□ top指向框架最上層的網頁,如果只有一套框架的話,應該是同一個parent
□ 框架集合是當前網頁中所有框架的集合
讓我們假設在contentFrame中有一個腳本想要在navigationFrame中的網頁相通,兩個網頁都包含在同一個框架中——層次中的唯一一個——這樣我們可以在contentFrame中成功的做如下的指向:
Frame集合石一個相關的序列(array)(正如我們在第6章中講到的form集合),所以每個元素都可以通過索引或者名稱進行評價,通常最好用名字(除非你有好的理由不去用),這樣,如果框架順序有所改變,你可以不需要再編輯代碼。 因為代碼相同,在一個複雜的框架中,如果層級改變,parent reference可以改變,所以我通常推薦開發人員開始從top索引。
上面給出的選項中,我比較喜歡選擇的是top.frames[‘navigationFrame’]。
既然我們有一個框架的reference,我們可以在另一個框架網頁中調用一個function:
或者,我們可以指向另一個框架文檔,並且在這裏與DOM合作:
討論
框架之間的連通並不僅僅可以在同一個功能變數名稱中的檔之間可用——處於安全的原因,無法讓不同功能變數名稱下的檔進行連通。比如,一個惡意的網站所有者將你經常訪問的網站下載到一個框架中,這樣你訪問的時候輸入的資料就會是輸入到惡意網站所有者那裏去了。
事實上,有些流覽器允許用戶在不同框架之間連通的時候禁止所有的腳本,目的就是為了網站之間的這種腳本共用,如果你的腳本發現自己在一個進行了界定的流覽器中運行是不可能正常工作的。
如果你的客戶抱怨這些問題(而且他們不能或者不會改變他們的設置允許跨框架腳本),最安全的方法就是避免跨框架腳本。
推薦給同仁
您想要瞭解更多的免費小竅門以便提升你的網站排名嗎?
請馬上聯繫我們網站管理員:
MSN: chenlinwu@cmmail.com
Email: info@rank-ad.com