2016-08-05 6 views
-1

私は簡単なテストページがあります。「同一生成元ポリシー」によると同一生成元ポリシーと場所プロパティ

<iframe src="http://www.w3schools.com" id="ifrm" style="height: 100px"></iframe> 

... 

<script> 
document.getElementById('ifrm').onload = function() { 
    try {    
    alert(frames[0].location);   // 1. 
    console.log(frames[0].location); // 2. 
    var loc = frames[0].location;  // 3. 
    alert(loc);       // 4. 
    } 
    catch (e) { 
    alert("Error: " + e) 
    } 
} 
</script> 

を - 「別の起源からの読み取りを許可されていない」なぜ行はありません#1は例外を引き起こしますが、#2は例外です。 #3は#4が有効ではないのになぜ有効ですか?私たちは#3のちょうど遠隔地のプロパティにアクセスしませんか?

答えて

0

なぜ#1は例外ではないのですか?

これは逆です。 1行目は例外をスローし、2行目は例外をスローします。


location

オブジェクト自体にアクセスすることが許可され、それに特定の特性ではないれています。

console.log()に渡すと、開発ツール(信頼できないJSの届かないところ)にすべてが渡されます。

alert()に渡すと、暗黙的に文字列に変換しようとしますが、これは許可されません。

+0

Thx。返信用はい、申し訳ありませんが、私は実際にラインを混乱させました。しかし、ライン#3と#4はどうですか?行オブジェクト#3はOKですが、行#1のように#4行に出力することは禁止されています。 – MulliGan81

+0

@ MulliGan81 - Line 3: "ロケーションオブジェクト自体はアクセスできますが、特定のプロパティはアクセスできません。" - ロケーションオブジェクト自体にアクセスしているだけです。どちらが良いですか。 – Quentin

+0

@ MulliGan81 - Line 4: "alert()に渡すと暗黙的に文字列に変換しようとしましたが、許可されません。" – Quentin

関連する問題