Лучший способ определить, является ли фрейм междоменным? - PullRequest
3 голосов
/ 25 марта 2010

Как лучше всего определить, является ли фрейм междоменным? Вот что у меня сейчас:

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
$(document).ready(function() {
    $("#foo").load(function() {
        alert(isCrossDomain(window.frames["foo"]));
    });
});

function isCrossDomain(frame) {
    try {
        var test = frame.document.location.href;
        return false;
    } catch (e) {
        return true;
    }
}
</script>
</head>
<body>
<iframe src="frame.html" id="foo" name="foo"></iframe>
</body>
</html>

По сути, браузер выдает исключение, когда я пытаюсь получить доступ к свойству фрейма location.href, если оно междоменное. Но безопасно ли полагаться на такое поведение для всех браузеров? Есть ли лучший способ реализовать функцию isCrossDomain?

Спасибо.

1 Ответ

0 голосов
/ 25 марта 2010

Разве вы не можете просто получить атрибут src IFRAME и проверить, отличаются ли протокол, порт и хост?

...