将事件添加到iframe正文

时间:2010-03-05 14:58:04

标签: jquery iframe events

我正在为jQuery设置一个自己制作的wysiwyg插件。他几乎已经完成但我知道我想在设计模式的iframe上添加一个keyup事件。但我不能让它奏效。我尝试了几乎所有在互联网上找到的东西。带有designmode的所见即所得iframe的类是.dhwysiwyg。我虽然下一个代码可以工作:

$(function () {
$('.dhwysiwyg', container).keyup(function () {
// the script
});
});

但这不起作用。 keyup事件不存在。

有人可以帮助我吗?

汤姆

4 个答案:

答案 0 :(得分:2)

iframe中的页面是否加载了自己的jQuery副本?如果是这样,请在外部页面(包含iframe的页面,而不是> iframe中的页面)中尝试此操作:

$(function() {
  var frameWindow = $('.dhwysiwyg').get(0).contentWindow;
  frameWindow.$('body').keyup(function() {
    // handler
  });
});

答案 1 :(得分:0)

我不确定您的示例的详细信息,但我知道将事件推送到iFrame有时会违反浏览器的安全策略。

答案 2 :(得分:0)

我从来没有听说过这种“设计模式”的东西(只有contentEditable)但你的问题可能是一个安全限制。什么是iframe内容,它们是否位于同一个域中?

答案 3 :(得分:0)

这种方法适合我

$(function() {
      var frameWindow = $('.dhwysiwyg').get(0).contentWindow;
      $(frameWindow.document).delegate("body",'keyup',function() {
      var bodycontent=$(frameWindow.document.body).text();
    });
});