【问题标题】:Accessing iFrame Contents via jQuery in IE在 IE 中通过 jQuery 访问 iFrame 内容
【发布时间】:2010-01-18 17:53:20
【问题描述】:

我正在使用 jQuery 尝试访问 iframe 所见即所得的内容,只是为了获取字符数并更新 iFrame 之外的计数器。奇怪的是,我的代码在 Firefox 中运行良好,但在所有版本的 IE 中都中断了。想知道是否有人可以帮助我使用一些 IE 友好的语法?这是我目前所拥有的:

这是在onload函数中:

textCounterWYSIWYG('longDesc_cnt', 2000);

这是函数本身:

function textCounterWYSIWYG(text, limit) {
  var len = String($("iframe").contents().find("body").html());
  var trimmed = len.replace(/^\s+|\s+$/g, '');
  var length = trimmed.length;
  if (length > limit) {
    field.value = field.value.substring(0, maxlimit);
  }
  else {
    var rem = limit - length;
    $("#"+text).text(rem + " Characters Remaining");
  }
}

var len = ... 行似乎破坏了 IE。非常欢迎任何想法/建议!

【问题讨论】:

  • 在IE中,什么是$("iframe").length、$("iframe").contents().length和$("iframe").contents().find("身体").长度?

标签: jquery internet-explorer iframe


【解决方案1】:

我会尝试的第一件事是通过 id 而不是标签名称获取 iframe。

另外,我会将变量名“len”更改为更相关的名称 ;-)。

【讨论】:

  • 向 iFrame 添加 id 可修复错误,并在页面加载时修复字符数。但是,在 keyup 上它仍然调用字符计数函数,但不再更新计数,但它在页面加载时起作用....
  • 看来这种情况正在发生,因为无论它获得的计数都没有更新,即使使用 Firebug 检查元素,主体也在更新。我什至更改了 javascript 以引用正文 ID: var len = String($("#theWYSIWYG").contents().find("#iframeBody").html());这总是为上述“长度”变量返回 4。
  • 啊,进一步检查发现,通过将其更改为 ID,len 的值为“null”,这就是计数没有更新但也没有出错的原因。因此,显然我们并没有真正使用此方法检索 iFrame 的内容。
  • 尤里卡!显然,问题是在 IE 有机会构建 iFrame WYSIWYG 之前尝试调用文本计数器。结案。 :)
【解决方案2】:

也许是一些默认的 IE 安全设​​置?您使用的是什么 WYSIWYG 库?

【讨论】:

  • 当前使用 uEditor for jQuery。不确定它是否是安全的,IE 给出的错误当然似乎与它的实际位置无关,所以我没有得到关于发生了什么的详细描述。
  • 顺便说一句,Ie 给出的错误是说我的 jQuery 包含结尾处预期的对象,但怀疑这是否有帮助,正如我之前看到的那样,实际错误与 jQuery 无关。
  • 是否有任何插件使用“打包”而不是“缩小”我知道有些插件开发人员没有解决打包的一些问题。
  • 不,没有插件被打包。许多都被缩小了,尽管它似乎引用 iFrame 消除了错误,尽管实际上并没有修复字符计数脚本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-28
  • 2019-05-19
相关资源
最近更新 更多