簡體   English   中英

幀之間的通信

[英]Communication between frames

我試圖簡化我的問題,我認為它不會比這更簡單:

<html>
<frameset rows = "50%,50%" name="proof">
<frame src="one.html" name="one">
<frame src="two.html" name="two">
</frameset>
</html>

<html>
<body>
<H1>Frame 1</H1>
</body>
</html>

<html>
<body>
<H1>Frame 2</H1>
</body>
</html>

這是我在加載框架集時看到的:

[https://ibb.co/LSMpgZF]

如果我以這種方式使用“Frame 2”編輯文件:

<html>
<body>
<H1>Frame 2</H1>
<script>
alert (top.two.name);
</script>
</body>
</html>

我重新加載框架集,我看到了這個:

https://ibb.co/Qkkhp69

到目前為止,一切都按預期工作。 但是,如果我以其他方式使用“Frame 2”編輯文件:

<html>
<body>
<H1>Frame 2</H1>
<script>
alert (top.one.name);
</script>
</body>
</html>

盡管已經完全按照 Internet 上的每個人的建議進行操作,但沒有出現警報。 另一個框架也是如此:它可以顯示自己的名稱,但不能顯示其他(或框架集)的名稱。

這是為什么? 兩個框架如何通信?

好的,我自己解決了這個問題。

我嘗試了許多變體,最重要的是我將兩個警報放在同一個 html 文件中。 我注意到只有當它是第一個時才正確執行顯示其自己名稱的警報。 所以我猜想在另一個警報的某個地方有一個 JS 錯誤,確實有一個 - 我最終在 Firefox 控制台中找到了錯誤。 正如我所懷疑的那樣,這是由瀏覽器安全設置引起的,並且可以在其他線程中找到一些好的解決方案: 禁用 firefox 同源策略

這對我來說非常有效(因為我使用的是 Firefox):在 Firefox 68 之后,我需要調整 'privacy.file_unique_origin' -> false(通過打開 'about:config')來解決新 CORS 的“CORS 請求不是 HTTP” -引入了原點規則。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM