最近有人向我尋求有關一組 HTML 頁面的幫助,但這些頁面未能按預期工作。該設置由一個框架集組成,其中某個框架中顯示的鏈接應該在其他框架中打開。這應該通過錨元素上的目標屬性或包含鏈接的頁面中具有目標屬性的基本元素來完成。問題是鏈接沒有在所需的目標框架中打開,而是在不同的選項卡中打開。經過一番分析,我發(fā)現這種行為是由 Javascript 變量“name”的存在引起的,該變量存在于最初加載到目標框架中的頁面上。如果該變量的值與目標框架的名稱不匹配,則鏈接將在新選項卡上打開。如果它與目標框架名稱匹配,則鏈接將按預期在目標框架中打開。這種情況在至少三種瀏覽器的最新版本中一致發(fā)生(嘗試過 Firefox、Chrome 和 Edge)。我想知道為什么會這樣。這是該問題的小型復制品(也可在此處獲?。?,其中包含一個框架集、三個帶有初始內容的框架和兩個鏈接。第一個鏈接 ,target="two"在框架“二”中打開。但是第二個鏈接, with target="three",不會在框架“三”中打開,而是在新選項卡中打開。顯然,這取決于該框架的初始內容 Three.html 中 Javascript 變量“name”的值。但為什么?索引.html:<html> <frameset rows="33%,33%,*"> <frame name="one" src="one.html"> <frame name="two" src="two.html"> <frame name="three" src="three.html"> </frameset></html>一個.html:<html> <body> frame "one" <br> <a target="two" href="content.html">show content (target="two")</a> <br> <a target="three" href="content.html">show content (target="three")</a> </body></html>二.html:<html> <body> frame "two" <script> <!-- var name = "two"; //--> </script> </body></html>三.html:<html> <body> frame "three" <script> <!-- var name = "two"; //--> </script> </body></html>內容.html:<html> <body> content </body></html>
2 回答

繁花不似錦
TA貢獻1851條經驗 獲得超4個贊
原因是通過name
在頁面中設置變量,您將覆蓋該Window.name
變量。
該Window.name
變量是系統(tǒng)用來確定框架名稱的變量。當您覆蓋此值并更改它,然后嘗試訪問具有舊值的框架時,您將被重定向到新選項卡。

慕斯709654
TA貢獻1840條經驗 獲得超5個贊
當 HTML 文件以框架標記中指定的鏈接名稱為目標時,不會在該命名框架中打開。問題是加載它的框架正在調用另一個框架來加載新的 html 文件,無法識別該名稱,或者無法按照語法按順序找到框架集中指定的命名框架。調用框架的命名沒有錯誤。該鏈接會在調用 html 文檔的自己的框架中自行打開。這意味著它在執(zhí)行 _SELF 時在同一窗口框架中打開。調用框架及其 HTML 文件和主要的錨標記代碼看不到我調用以加載所需 HTML 文件的窗口框架,并且無法識別我為調用框架指定的名稱。
如何解決......第一段問題。?我重申瀏覽器沒有任何問題。我擁有最好的應用程序瀏覽器陣容。所有執(zhí)行都可以在所有網頁上正常工作。
羅斯
- 2 回答
- 0 關注
- 165 瀏覽
添加回答
舉報
0/150
提交
取消