2009-04-14 8 views
16

同じドメインにないiframe内のページのリンクをユーザーがクリックするたびに通知を受け取る必要があります。私はxssの制限を認識していますが、私が知る必要があるのは、現在のページがIframeで提供されていることだけです。 xssのルールに違反することなくこれを行う方法はありますか?JQueryを使用してIframeの現在のsrcを取得する

答えて

8

クロスサイトスクリプティングの制限がない場合は、これが有効です。残念ながら、これらの制限に違反することなくURLを取得する方法はわかりません。

<html> 
    <head> 
     <script type="text/javascript"> 
      function GetIFrameUrl() 
      { 
       alert('url = ' + document.frames['frame1'].location.href); 
      } 
     </script> 
    </head> 
    <body> 
     <a href="#" onclick="GetIFrameUrl();">Find the iFrame URL</a> 
     <iframe name="frame1" src="http://www.google.com" width="100%" height="400"></iframe> 
    </body> 
</html> 
+0

の属性のソースを取得し、このviloateのXSSをいルール? – Micah

+3

はい、そうです。私はルールに違反することなく、必要なことをする方法があるとは思わない。 – joshuapoehls

+2

firebugでFirebugで取得したものはすべてdocument.framesが定義されていません – OZZIE

32

jQueryを使用してiframeの場所を取得するには:あなたは簡単にバニラJSでそれを行うことができます

alert($('iframeId').contents().get(0).location.href); 
+1

これは私のためには機能しません – knocte

+6

これは同じドメインの場合にのみ動作します - xssセキュリティは異なるドメインに対してそれを防ぎます – Alvin

+0

jsはiframe内で実行されています。iframeを選択するとiframeは機能しませんが、 "$( 'iframe'、window.parent.document)のように選択してください。 (同じドメインを想定しています) – neminem

4

を。

  • クエリ特定の名前、ID、クラス、または何でも
  • を持つ要素のための文書は、その要素

    //Get by Id 
    var frame_src = document.getElementById('myIframe').src 
    //Get by tag name - get the first 
    var frame_src = document.getElementsByName('frmExternal')[0].src 
    //Alert 
    alert(frame_src) 
    
0
<script type="text/javascript"> // if window open in iframe then redirect to main site 
     if(window.top.location != window.self.location) 
     { 
      alert(window.self.location); 
      // top.window.location.href = window.self.location; 
     } 
    </script> 
関連する問題