【问题标题】:bind click event from parent page on image within Iframe将来自父页面的点击事件绑定到 Iframe 中的图像上
【发布时间】:2014-03-01 19:26:38
【问题描述】:

我的父页面 abc.html 具有以下功能

function displayImageDialog(path){
  //alert(path);
}

还有 HTML 代码

<iframe src="xyz.html"  onLoad="javascript:onloadCall();" name="loadpageframe" id="loadpageframe"></iframe> 

现在在 IFrame 中,有多个 img 标签可用,如何在 img 上绑定点击事件。目前我可以为每个 img 标签分配标题

function onloadCall(){
    var $currIFrame = $('#loadpageframe');
    var img = $currIFrame.contents().find("img");
    for(var i=0;i<img.length;i++){
        img[i].title='Click to enlarge';

        //TODO click event code to pass img src attribute to
        // function displayImageDialog(src)

    }  
}

我根本不想在 IFrame 中修改我的页面。所以我正在寻找解决方案

【问题讨论】:

标签: javascript jquery iframe


【解决方案1】:

您好,请在我的最后尝试一下。

function onloadCall(){
var $currIFrame = $('#loadpageframe');
var img = $currIFrame.contents().find("img");
for(var i=0;i<img.length;i++){
    img[i].title='Click to enlarge';
    img[i].onclick = function(){
        alert('hi');
        displayImageDialog($(this).attr('src'));
    };
    //TODO click event code to pass img src attribute to
    // function displayImageDialog(src)

   }  
}

function displayImageDialog(src){
alert(src);

}

【讨论】:

    【解决方案2】:

    试试这个

    $(function(){
     var frm = window.frames["loadpageframe"].window;//if iframe is test
    
      $(frm).find("img").on("click",function() {
          $(this).attr('title','sometext');
       // do something 
      });
    });
    

    将此代码放在 iframe 之外

    【讨论】:

    • 把这个放在哪里?如果在 onloadCall 中,它不工作
    猜你喜欢
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    相关资源
    最近更新 更多