2017-03-08 18 views
0

私はこれを解決するためにどこからでも検索してきましたが、見つけたすべての解決策は機能しませんでした。私はドキュメント内にあるiframe内で発生するクリックを取得したいと思います。私は「文書準備完了」アラートを取得しますが、どこの場所をクリックしても「iframeクリック」アラートは表示されません。私はここにコードがありますASP.NET MVC 5を使用しています:iframeのonclickメソッドを機能させる

@Scripts.Render("~/bundles/jquery") 
@{ 
    ViewBag.Title = "Home Page"; 
} 

<div id="terminal-iframe-wrap" class="map-info-wrapper" style="display: none"> 
    <iframe name="terminal-iframe" id="terminal-iframe" class="terminal-url-wrapper" frameBorder="0"></iframe> 
</div> 

<div id="all-terminals-view" class="map-info-wrapper"> 
    <div id="map" class="map"></div> 

</div> 

@section scripts 
{ 
    <script src="~/Scripts/lib/promise.min.js"></script> 
    <script src="~/Scripts/lib/fetch.js"></script> 
    <script src="~/Scripts/app/map.js"></script> 
    <script async defer src="//maps.googleapis.com/maps/api/js?key=somethingsomething&callback=initMap"></script> 
    <script> 
     $(document).ready(function() { 
      alert("document ready."); 
      document.getElementById('terminal-iframe').contentWindow.document.body.onclick = function (event) { 
       alert("iframe clicked"); 
       if (e.target.id != "right-side-menu" && !$(e.target).parents("#right-side-menu").size()) { 
        if ($('#right-side-menu').hasClass('in')) { 
         $('#right-side-menu').collapse('hide'); 
        } 
       } 
      }; 
     }); 
    </script> 
} 

答えて

0

あなたが好きそれを使用することができます:

jQueryのiframe要素で使用する場合は、返すこと.contentsと呼ばれる方法で、()、持っていますiframeのドキュメント。

// Get a reference to the iframe document 
var iframeDoc = $('#iFrame').contents().get(0); 

// Bind event to iframe document 
$(iframeDoc).bind('click', function(event) { 
    // do something 
}); 

これはあなたに役立ちます。あなたが訪問することができます詳細について

:OKであることを見http://api.jquery.com/contents/

+0

はまだ動作しません。 iframeをクリックすると何も起こりません。 –

0

あなたのjavascriptのコードは、以下のcodepenを参照してください。

http://codepen.io/anon/pen/ryWoKX?editors=1010

$(document).ready(function() { 

    document 
    .getElementById('terminal-iframe') 
    .contentWindow.document.body.onclick = function (event) { 
       console.log('clicked !'); 
    }; 
}); 

あなたの問題は、「ディスプレイを持っているということです:none "in#terminal-iframe-wrap

+0

ディスプレイが表示されていない場合は、まだ見ることができますか? iframeは確かに表示されますが、あなたがここに書いたコードとcodepenでまだ動作しません。 –

+0

私は、 'display'属性を、' onclick'関数を使って 'inline'に変更し、別のファイルにjavascriptを付けています。 –

関連する問題