【发布时间】:2014-11-26 09:30:55
【问题描述】:
已编辑:我之前没有说得足够清楚......
我正在使用 jQuery 和 AngularJS 开发一个应用程序。该应用程序的一部分涉及将一个元素拖放到另一个元素上。问题是当我 srop 元素时,Firefox 会尝试加载一个新的 URL,它告诉我它是无效的。
我已经设法在 Plunker 中复制了这个问题: http://plnkr.co/edit/PGYH67vKp2WoT7xbZTcs?p=preview
JS:
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
var dragElement = document.getElementById("dragElement");
dragElement.addEventListener("dragstart", dragstart);
var dropBox = document.getElementById("dropBox");
dropBox.addEventListener("drop", drop);
dropBox.addEventListener("dragover", dragover);
function dragstart(e) {
e.dataTransfer.setData("Text", e.target.attributes["data-drag"].value);
e.dataTransfer.effectAllowed = "copyMove";
}
function dragover(e) {
e.preventDefault();
}
function drop(e) {
alert("dropped");
}
});
HTML:
<!DOCTYPE html>
<html ng-app="plunker">
<head>
<meta charset="utf-8" />
<title><!-- Title here --></title>
<link data-require="jqueryui" data-semver="1.10.0" rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.10.0/css/smoothness/jquery-ui-1.10.0.custom.min.css" />
<link rel="stylesheet" href="style.css" />
<script data-require="jquery" data-semver="2.1.1" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script data-require="jqueryui" data-semver="1.10.0" src="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.10.0/jquery-ui.js"></script>
<script data-require="angular.js@1.0.x" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js" data-semver="1.0.8"></script>
<script src="script.js"></script>
</head>
<body ng-controller="MainCtrl">
<div id="dragElement" draggable="true" data-drag="Banana Cake">
Drag me to the red box in Firefox
</div>
<div id="dropBox"></div>
</body>
</html>
如果您转到 javascript 的底部到函数 drop(e) 然后注释掉警报,浏览器会尝试转到其他地方。离开警报,页面保持不变。
这只发生在 Firefox 中。 Chrome、IE 和 Opera 运行良好。 Safari 不会让我放弃,但那是另一回事。
非常感谢!
克雷格
【问题讨论】:
-
我尝试过各种版本的 jQuery 和 Angular。没有区别。
-
这里有更新!如果我向 data-drag 属性添加一个真实的 URL,Firefox 会去那里,例如data-drag="orf.at"
标签: jquery angularjs jquery-ui firefox