Javascript IE'中的图像调整手柄大小;内容编辑模式

Javascript IE'中的图像调整手柄大小;内容编辑模式,javascript,internet-explorer,Javascript,Internet Explorer,如何在IE 7+的contenteditable模式下有选择地关闭图像大小调整手柄?我尝试将图像的contentEditable设置为false,将其onresizestart设置为“return false”,但没有效果 我正在使用tinyMCE。您可以通过定义行为文件来禁用句柄的功能。我找不到任何能让你隐藏把手的东西。下面代码的结果是拖动控制柄无效 noresize.htc: <public:component lightweight="true"> <scrip

如何在IE 7+的contenteditable模式下有选择地关闭图像大小调整手柄?我尝试将图像的contentEditable设置为false,将其onresizestart设置为“return false”,但没有效果


我正在使用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>