小编Kyr*_*tap的帖子

如何获取 iFrame 的元素/名称(沙箱属性不允许同源)向父级发送 postMessage

现在我有 3 个 iframe,名称为“iframe1”、“iframe2”和“iframe3”,它们都与父级同源,我可以控制双方。其中一个 iframe 向父级发送一些 postMessage。

我想实现两件事:

  1. 能够在父级内部识别发送 postMessage 的 iframe 的元素(或名称)。
  2. 但也要防止 iframe 访问父级的 Window 对象。

我在所有 iframe 上都使用了 HTML5 沙箱属性,允许除“允许同源”之外的所有内容。我成功地无法再从 iframe 访问父对象,问题是我无法识别发送 postMessage 的 iframe 的元素。那是因为“e.source.name”(e 是接收到的消息返回的事件对象)触发了沙箱访问冲突的 SecurityError 并且缺少“allow-same-origin”标志。

我测试了其他事件对象的属性:

e.origin - 返回 null。

e.source - 返回 Window 对象,但无法访问其属性和方法

问题是: 我怎样才能知道向父级发送 postMessage 的 iFrame 元素的名称并防止 iFrame 能够访问父级的对象?也许还有其他解决方法而不在 iframe 上使用沙箱?

html javascript iframe sandbox same-origin-policy

5
推荐指数
0
解决办法
327
查看次数

Javascript - 在指定元素中更改元素的 src

在 html 中,我有很多带有名称(是的,名称,而不是 ID)的 DIV,分别是 p001、p002、p003...,它们是这样的:

<div id="pole" name="p001"><img src=""></div>
<div id="pole" name="p002"><img src=""></div>
<div id="pole" name="p003"><img src=""></div>
Run Code Online (Sandbox Code Playgroud)

等等...

在 Javascript 中,我定义了一个名为“pos”的变量,它包含一个数字,现在:“284”和一个应该将 img src 更改为“player.png”的函数。我尝试了两种方法,但这些方法都不起作用:

document.getElementsByName('p'+pos).innerHTML='<img src="player.png">';
Run Code Online (Sandbox Code Playgroud)

document.getElementsByName('p'+pos).getElementsByTagName("img").src="player.png";
Run Code Online (Sandbox Code Playgroud)

如何更改指定DIV中的img src?

html javascript src

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

html ×2

javascript ×2

iframe ×1

same-origin-policy ×1

sandbox ×1

src ×1