Javascript IE'中的图像调整手柄大小;内容编辑模式
如何在IE 7+的contenteditable模式下有选择地关闭图像大小调整手柄?我尝试将图像的contentEditable设置为false,将其onresizestart设置为“return false”,但没有效果Javascript IE'中的图像调整手柄大小;内容编辑模式,javascript,internet-explorer,Javascript,Internet Explorer,如何在IE 7+的contenteditable模式下有选择地关闭图像大小调整手柄?我尝试将图像的contentEditable设置为false,将其onresizestart设置为“return false”,但没有效果 我正在使用tinyMCE。您可以通过定义行为文件来禁用句柄的功能。我找不到任何能让你隐藏把手的东西。下面代码的结果是拖动控制柄无效 noresize.htc: <public:component lightweight="true"> <scrip
我正在使用tinyMCE。您可以通过定义行为文件来禁用句柄的功能。我找不到任何能让你隐藏把手的东西。下面代码的结果是拖动控制柄无效 noresize.htc:
<public:component lightweight="true">
<script language="javascript">
function CancelEvent()
{
return false ;
}
this.onresizestart = CancelEvent ;
this.onbeforeeditfocus = CancelEvent ;
</script>
</public:component>
请注意,您需要获得正确的url()路径。将css类添加到要选择性禁用的图像中
本文有一个替代的.htc文件,它对我不起作用:
我正在使用tinyMCE中的插件来阻止所有图像的大小调整。
但是,我发现它阻止了图像被拖放到编辑器实例中
我发现我可以使用以下方法去除鼠标上的大小属性:
setup : function(ed) {
ed.onMouseUp.add(function(ed, e) {
if (e.target.nodeName == "IMG") {
e.target.removeAttribute("width");
e.target.removeAttribute("height");
}
});
}
不过,我很想去掉那些该死的把手。为您的图像设置。适用于较旧的IE,但最近已被弃用。通常您不希望任何元素的调整大小功能都可以访问。您可以设置
contenteditable
容器的onresizestart
处理程序,以取消任何调整大小操作。
即:
这不会隐藏句柄,但是用户将无法调整元素的大小,不管它是什么类型
希望这有帮助 这需要痛苦、时间和运气才能找到:您希望“controlselect”事件删除IE中的调整大小句柄
element.oncontrolselect = function () { return false; };
上面的代码行对我很有用(注意:不要使用TinyMCE,但是,这似乎是一个令人头痛的问题,而不是一个特定的TinyMCE问题)。您需要在任何不希望有这些拖动句柄(在我的例子中是图像)的元素上设置此句柄。这是有史以来最好的解决方案:
<div contenteditable="true">
<label contenteditable="false"><input/></label>
</div>
或者任何包装输入/img的html元素
在IE11上与img的效果也很好。可能相关(但不是我起初认为的完全重复)是的,这只指FireFox。图像是否仍然需要改变,并且通常表现为图像?Teemu的答案为我$('',{'unselectable':'on');这应该和我在探险家的作品一样。。。对我有点用?它会使图像不可编辑,但加载页面后的第一次单击仍会显示调整大小句柄,并阻止单击事件的正确功能。如果我在图像外部单击,则会清除调整大小控制柄-但只有在我没有单击其他图像时,控制柄才会出现在它们首先出现的图像上!这让我有些困惑。我使用jQuery。@GertSønderby看起来像是
不可选择的
在IE10中被弃用了,可能也是9。无论如何,它不在文档中,但我记得这需要设置为属性,设置属性不起作用。@Teemu,谢谢您的解决方案。但是,有一个问题。当您将设置为不可选择时
->打开
,将使元素
不可调整
。控制柄在第一次单击时可见,但如果再次单击图元,它们将不会显示。问题是,不能在contenteditable
区域中拖放元素。有没有办法让IE中的也可以拖动?旁注:->unselectable
即使在IE11
中也能工作,如果它是通过setAttribute
->element.setAttribute('unselectable','on')
@W.D设置的。当unselectable
设置为一个元素时,它实际上应该是不可选择的,因此也不可能使其可拖动。我无法在IE11中重现第一次单击的问题,尽管一个不推荐使用的属性可能会出现异常行为。从IE11开始,此方法不再起作用-而且似乎没有其他方法起作用。@Gert什么版本的windows?它在8.0和8.1I上对我有效,我当时使用的是来自modern.ie的8.1。我承认,我从那以后就没有检查过这一点,假设A)情况很糟糕,B)它们不会被修复——但我准备好肯定地感到惊讶:)我在Win7/IE11上也看到了同样的情况——没有触发任何controlselect
事件,丑陋的框仍然存在。嗯。。。也许Edge会有什么东西?onresizestart=“return false;”在IE11中不起作用(不幸的是,这在IE11之后就停止了工作。)
var editor = document.getElementById('editor');
editor.onresizestart=function(){return false;}
element.oncontrolselect = function () { return false; };
<div contenteditable="true">
<label contenteditable="false"><input/></label>
</div>