2010-10-20 45 views
1

我有以下的HTML問題正在運行:預防的JavaScript的HREF

<a href="javascript:document.formName.submit();" target="iframe"> 

如果窗體名稱是iframe中表單的名稱。我希望瀏覽器導航到iframe中的「javascript:...」頁面,以便在iframe中的當前頁面上執行javascript。我的問題是,瀏覽器將嘗試執行該函數並使用返回的結果作爲url。當然,在當前頁面上沒有提交表單,所以我只是得到一個錯誤。

+3

iframe是否與周圍頁面位於同一個域中? – 2010-10-20 19:40:39

+0

不,它在一個單獨的域上。 – 2010-10-20 19:50:14

回答

2

跨域iframes沒有飛行區域,您將無法對不同域中的框架內的DOM執行任何操作。即使用戶點擊框架內的提交按鈕,您的頁面也無法將新網址從框架中取出。

0

在這種情況下,你可以通過iframe內到達做到這一點:

<a href="javascript:window.frames[N].contentDocument.FORMNAME.submit()"> 

(可能不完全正確的咒語)。通常,您應該使用超鏈接的onclick處理程序來執行此操作,該處理程序調用由iframe的文檔定義的函數。

編輯:有沒有辦法使這項工作的跨域。這違反了瀏覽器的安全策略。

+0

我試過這種方法,只要iframe在同一個域中,它就可以在大多數瀏覽器中使用,但是如果它位於單獨的域上,大多數瀏覽器都會限制對iframe內容的訪問。 – 2010-10-20 19:51:39

+0

如果iframe在單獨的域上,那麼OP就沒有辦法做到這一點。所以我假設了同域。 – zwol 2010-10-20 22:14:13