剑道编辑器 + show(“slide”) 在 Firefox 中不可编辑
Kendo Editor + show("slide") is not editable in Firefox
请参考JSFiddle来了解这个问题的工作演示。
在 Firefox(最新版本,24)中,如果我使用 jQuery UI 的.show("slide", { direction: "right" })
来显示一个 kendoEditor,编辑器不包含我设置的值,并且不可编辑。 如果我使用 jQuery 中的普通旧.show()
,那么一切正常。 它在Chrome 30和IE 10中也可以正常工作。 为什么.show("slide")
破坏 Firefox 中的编辑器,这个问题有什么解决方法吗?
此示例的 Html:
<button id="btn1" type="button">Button 1</button>
<button id="btn2" type="button">Button 2</button>
<div id="div">
<textarea data-role="editor" data-bind="value: TheValue"></textarea>
<button id="hide" type="button">Hide</button>
</div>
这是不起作用的 JS 代码:
$(document).ready(function () {
var model;
function bindDiv(value) {
model = kendo.observable({ TheValue: value });
kendo.bind($('#div'), model);
$('#div').show("slide", { direction: "right" });
//$('#div').show();
}
$('#div').hide();
$('#btn1').click(function () { bindDiv('hello'); });
$('#btn2').click(function () { bindDiv('goodbye'); });
$('#hide').click(function () {
console.log(model.get('TheValue'));
$('#div').hide("slide", { direction: "right" });
//$('#div').hide();
});
});
单击btn1
应导致编辑器显示文本"hello"
,然后单击"隐藏"应在控制台中显示编辑后的文本。如果您将这两行"slide"
替换为普通注释掉的版本,那么它工作正常(但看起来不那么酷)。
有谁知道为什么这不起作用,或者我能做些什么?
更新:
在动画播放之前,一切正常 - 编辑器的 iframe 正文具有正确的内容,并标有 contenteditable
属性。 动画完成后,iframe 的主体将被擦除干净 - 没有内容,没有属性。 我仍在努力弄清楚为什么以及如何处理它。
如果将 KenoUI 版本升级到最新的 2013 年第 2 季度(版本 2013.2.716),则剑道编辑器将有一个名为的新方法: refresh
refresh
重新初始化编辑区域 iframe。应在之后使用 在 DOM 中移动编辑器。
因此,它完全符合您的需求,因为动画会在完成后移动您需要调用刷新的编辑器 iframe:
$('#div').show("slide", { direction: "right" }, function () {
var editor = $("#editor").data("kendoEditor");
editor.refresh();
});
要完成这项工作,您还需要更改视图并为您的文本区域提供 id:
<div id="div">
<textarea id="editor" data-role="editor" data-bind="value: TheValue">
</textarea>
</div>
演示 JSFiddle。
,所以,当幻灯片效果发生时,iframe无法正确显示...
我找到的解决方案是在幻灯片效果的末尾重新绑定编辑器。但是需要隐藏起来摧毁它,否则,一些冲突来了。
JSFIDDLE : http://jsfiddle.net/xzftW/18/
法典:
$(document).ready(function () {
function bindDiv(value) {
kendo.bind($('#div'), '');
$('#div').show("slide", { direction: "right" }, function(){
resetme();
kendo.bind($('#div'), kendo.observable({ TheValue: value }));
$('#hide').click(function() {hideme() } );
});
}
$('#div').hide();
$('#btn1').click(function () { bindDiv('hello'); });
$('#btn2').click(function () { bindDiv('goodbye'); });
});
function hideme()
{
$('#div').hide("slide", { direction: "right" }, function(){
resetme();
});
}
function resetme()
{
$('#div').html('<textarea data-role="editor" data-bind="value: TheValue"></textarea><button id="hide" type="button">Hide</button>');
}
"slide"
是jquery-ui效应 - 与jQuery"基本"效应相反。
所有jquery-ui效果的工作方式如下:它们将选定的节点包装在节点内,对包装器进行动画处理,然后解开内容。
我不知道剑道对此有何反应。
另一方面,jQuery的"基本"效果保留了DOM并修改了元素的css属性。
您可以尝试将效果替换为调用 .animate()
,或者,正如其他人建议的那样,尝试重新绑定或刷新您的剑道观察器。
- CKEditor Widget-阻止编辑可编辑元素本身
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 为什么这在IE中的工作方式与在Firefox中不同
- 高亮显示时编辑文本大小和颜色
- 剑道UI内联编辑:如何在点击其他按钮时隐藏按钮
- JS可以在Chrome中工作,但不能在Firefox中工作
- FireFox扩展对TinyMCE编辑器执行脚本注入
- 在不使用Firefox的情况下编辑Firefox首选项
- 在拖动/拖放事件上获取 Firefox 内容可编辑的拖放光标位置
- 剑道编辑器 + show(“slide”) 在 Firefox 中不可编辑
- CodeMirror 编辑器在 Firefox 中键入时会滚动
- 在 Firefox 上使用 ajax 和 jQuery 单击时,编辑框文本不会被选中
- 在Firefox中强制将焦点设置回内容可编辑文档
- 这个用于编辑图像的javascript弹出框在firefox和chrome中有效,但在InternetExplorer中
- 使用FB后,不能在iframe应用程序中编辑输入字段.登录Firefox浏览器
- JQuery可编辑数据网格突然不能在firefox中工作
- FireFox editableCellTemplate只允许编辑一次
- 在Firefox中编辑javascript代码
- 如何从 Firefox 插件中的“编辑此书签”弹出窗口中获取窗口 URL
- 使用 WebStorm for Firefox 进行实时编辑