Я хочу передать некоторую информацию из фрейма в его родительский объект (информация, которая недоступна из-за XSS).
Могу ли я сравнить окно source
, отправленное через postMessage
до значений window.frames
?
MDN (в ссылке выше) говорит, что сообщение может быть использовано для postMessage
назад, но не относится к проверке на равенство.
Это правильно работает на IE9 FF5 и Chrome12, но я хочу знать, насколько это надежно (то есть в стандарте).
Код теста:
postMessageOuter.html
<!DOCTYPE html>
<html>
<head>
<title>Outer Page</title>
<script type="text/javascript">
window.addEventListener("message", function (event) {
for (var i = 0; i < frames.length; ++i)
if (event.source == frames[i])
alert(i);
}, false);
</script>
</head>
<body>
<iframe src="postMessageInner.html"></iframe>
<iframe src="postMessageInner.html"></iframe>
<iframe src="postMessageInner.html"></iframe>
</body>
</html>
postMessageInner.html
<!DOCTYPE html>
<html>
<head>
<title>Inner Page</title>
<script type="text/javascript">
function foo() {
window.parent.postMessage("Hello", "*");
}
</script>
</head>
<body>
<input type="button" value="X" onclick="foo()" />
</body>
</html>