【问题标题】:jQuery iframe access working only the first time in FirefoxjQuery iframe 访问仅在 Firefox 中首次工作
【发布时间】:2011-03-24 06:35:47
【问题描述】:

我正在使用 jQuery 和 Ruby On Rails。 我有一个 ajax 调用 $.get(),它会渲染一段包含 iframe 的 html

我想修改 iframe 以确保 <a> 链接在新窗口中打开。

为此,我在 iframe 定义中添加了一个 onload:

<iframe id="iframe_message_<%= message.id %>" class="iframe_message" name ="iframe_message_<%=  message.id %>" width="100%" frameborder="0" src="<%= message.attachments.body_html.first.document.url %>"  onLoad="autoResize('iframe_message_<%= message.id %>');">

autoResize 函数在 ajax 调用渲染的 html 中定义,包含:

$(".iframe_message").ready(function () { 
    $('a', frames[id].document).attr('target','_blank');
});

这在 IE 和 Safari 中运行良好,但我在使用 firefox 时遇到问题,第一次通过鼠标单击调用 $.get() 而不是在接下来的单击时(&lt;a&gt; 标签未修改)。

我想到了一个缓存问题,并将$.get() 替换为$.ajax()cache:true,但我仍然有相同的行为。

关于可能是什么问题的任何想法?

【问题讨论】:

    标签: jquery ruby-on-rails firefox iframe


    【解决方案1】:

    很难从您的描述中看出,但您的 jquery 可能需要从 iframe 中调用。将 iframe 视为一个单独的网页。

    【讨论】:

    • 您好,感谢您的回答。在 iFrame 加载到我的页面之前,我无法访问它,因此我无法将 javascript 放入其中。此外,这适用于除 Firefox 之外的其他浏览器
    • 我已经做了进一步的测试,奇怪的是,在第一次调用 firefox 时,我在 iframe 中的所有链接都被修改为 target="_blank",当我第二次点击它时修改 iframe 之外的所有 lin,而不是 iframe。
    【解决方案2】:

    我去了 jQuery 网站并查看了 .content 描述 我的“工作”代码是

    $("#"+id).contents().find("a").attr('target','_blank');
    

    "#"+id 是我的 iframe 的 ID。

    【讨论】:

      猜你喜欢
      • 2016-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-04
      • 2012-01-20
      相关资源
      最近更新 更多