在更改 iFrame 之前停止所有 jQuery

Stop all jQuery before changing iFrame

我有一个带有上一个和下一个按钮(以及 iFrame 外部的其他控件)的脚本,每次单击按钮都会重新填充一个 iFrame。这很好用,除非我在 iFrame 中淡化图像并在其仍在处理过程中更改内容。我遇到的问题是在 IE 10 和 11 中。在非 IE 浏览器中似乎没问题。

我已经精简了代码以便于查看发生了什么。我基本上是从 iFrame 外部淡化图像,例如:

var iframe = $('#iframe').contents();
$('#imageFading',iframe).fadeTo(750,1.0);

我将 iFrame 内容更改为:

var html = "Some HTML Content here";
var iframe = $('#iFrame').get(0);
iframe = (iframe.contentWindow) ? iframe.contentWindow : (iframe.contentDocument.document) ? iframe.contentDocument.document : iframe.contentDocument;
iframe.document.open();
iframe.document.write(html);
iframe.document.close();

如果在图像仍在褪色时更改 iFrame 内容,我会收到错误消息:

SCRIPT70: Permission denied
File: jquery.min.js, Line: 4, Column: 928

此错误一直在控制台中输出,直到我刷新或关闭页面。我正在使用 jQuery 1.11.2。

当我使用未压缩版本时,它的第 6999 行是:

} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {

我尝试将 fadeTo 放入 try/catch 并使用 jQuery 的 clearQueue()。

在重新加载 iframe 之前,我最终通过使用 jQuery 的 stop 函数使其正常工作。

$('#imageFading',iframe).stop();

在调整 iframe 内容之前尝试 .stop(true, true)