2010-03-25 4 views
3

Quelle est la meilleure façon de déterminer si une trame est inter-domaine? Voici ce que j'ai maintenant:La meilleure façon de déterminer si l'image est inter-domaine?

<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> 

Fondamentalement, le navigateur déclenche une exception lorsque je tente d'accéder à la propriété location.href du cadre si elle est multi-domaine. Mais est-il sûr de s'appuyer sur ce comportement pour tous les navigateurs? Existe-t-il une meilleure façon d'implémenter la fonction isCrossDomain?

Merci.

+1

C'est probablement ce que je ferais, ou quelque chose comme ça. – Pointy

Répondre

0

Ne pouvez-vous pas simplement obtenir l'attribut src de l'IFRAME et vérifier si le protocole, le port et l'hôte sont différents?

+0

L'attribut src ne change pas lorsque l'emplacement iframe change. Et non, vous ne pouvez pas accéder à ces informations lorsqu'il s'agit d'un domaine inter-domaine. – Emmett