HTML5 draggable ='false'在Firefox浏览器中不起作用

时间:2014-10-14 09:13:21

标签: javascript html5 drag-and-drop draggable

我只是尝试将HTML5 draggable ='false'属性应用于某些图像,但它在Firefox浏览器中不起作用。在Chrome中工作正常但在Firefox上,选择该图像后 能够拖放。示例代码可以在这里看到:

<div id="dnd">
    <textarea placeholder="drop here"></textarea>
    <img src="http://johnlewis.scene7.com/is/image/JohnLewis/231108668?$prod_main$" draggable='false'/>
</div>

Jsfiddle

我正在使用Firefox最新版本:32.0.3

谷歌很多,但没有找到更好的解决方案。有没有使用JavaScript的解决方案?任何帮助,将不胜感激。

由于

4 个答案:

答案 0 :(得分:20)

试试这个

添加ondragstart =&#34;返回false;&#34;到您的HTML元素

&#13;
&#13;
<div id="dnd">
    <textarea placeholder="drop here"></textarea>
    <img src="http://johnlewis.scene7.com/is/image/JohnLewis/231108668?$prod_main$" draggable='false' ondragstart="return false;"/>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

各种更新,该解决方案不适用于React,但是添加以下内容即可。

onDragStart={(e) => { e.preventDefault() }}

编辑:对于ondragstart返回false不再适用于更现代的Firefox版本(来源:Hooman Askari),在这种情况下,请使用以下内容。

function dragStart(e) {
    e.preventDefault()
}

...以及元素上

ondragstart="dragStart(e)"

答案 2 :(得分:0)

James Morrison's update的更新:甚至新版本似乎也不再起作用。

我可以通过在addEventListener("dragstart",...)内打勾来解决类似的问题,以防您在拖放时玩耍。就我而言:

document.addEventListener("dragstart", function( event ) {
    if (event.target.parentNode.localName == 'li') {
      // console.log("In case it's inside a <li> element, prevent the drag");
      event.preventDefault();
    } else {
      // code taken from a Mozilla example, replace with what you need:
      // store a ref. on the dragged elem
      dragged = event.target;
      // make it half transparent
      event.target.style.opacity = .5;
    }
}, false);

要检查<img>,检查看起来像if (event.target.localName == 'img') {...

根据OP请求:我尝试过的所有“仅HTML”解决方案均无效。

答案 3 :(得分:-2)

您可以为图像设置以下CSS属性:

.unselectable {
    /* For Opera and <= IE9, we need to add unselectable="on" attribute onto each element */
    /* Check this site for more details: http://help.dottoro.com/lhwdpnva.php */
    -moz-user-select: none; /* These user-select properties are inheritable, used to prevent text selection */
    -webkit-user-select: none;
    -ms-user-select: none; /* From IE10 only */
    user-select: none; /* Not valid CSS yet, as of July 2012 */

    -webkit-user-drag: none; /* Prevents dragging of images/divs etc */
    user-drag: none;
}

HTML code:

<img src="something.jpg" class="unselectable">

Fiddle