问题 我有一个小问题拖动元素到一个可伸缩的div容器。 一旦元素实际上在容器中,元素就会很好的拖拽,并按照它们应该的方式工作。 拖到可伸缩容器上的较大元素没有太多问题。 但是,当拖动较小的元素时,可以看到鼠标不再附加到所述元素上,并且当它被放下时,它会掉落一点。 我正试图find一个解决scheme,我的鼠标停留在元素上,并且掉落在应该放置的地方。 我已经解决了一点一滴的问题,你可以在下面看到,但这是让我疯狂的难题的最后一块。 如果有人有时间伸出援助之手,将不胜感激。 这是一个codepen – 单击并将两个蓝色的元素拖到白色的容器来尝试一下 Codepen 全屏幕视图 行动中的短GIF 这将有助于确保可放置区域与缩放容器一起使用。 $.ui.ddmanager.prepareOffsets = function(t, event) { var i, j, m = $.ui.ddmanager.droppables[t.options.scope] || [], type = event ? event.type : null, list = (t.currentItem || t.element).find(":data(ui-droppable)").addBack(); droppablesLoop: for (i = 0; i < m.length; i++) { if (m[i].options.disabled || (t && […]
构build一个离子应用程序,并突然遇到一个问题,我发现真的很难debugging的地方是浏览器“推迟”长时间运行的计时器任务,导致我的视图只能执行一次控制器中的代码(即使控制器显式重新加载)。 警告是: 推迟长时间运行计时器任务以提高滚动平滑度。 请参阅crbug.com/574343。 我在之后: 了解警告及其发生的原因 任何指导如何去debugging这样的警告。 提前致谢。 更新我觉得重要的是要注意,虽然从来没有收到错误,只有警告作为我的问题的原因,我已经回滚到一个工作版本。 这个工作版本仍然有警告出现,但不影响我的应用程序的运行。
我正在使用哈希dynamic加载内容。 为了使后退button工作,我正在捕获哈希更改。 但有时我需要更改散列而不触发散列更改函数(例如,当页面被redirect到服务器端,并且在内容返回时我需要更新散列)。 我提出的最好的解决scheme是取消绑定hashchange事件,进行更改,然后重新绑定它。 然而,由于这是asynchronous发生的,我发现它重新绑定的速度太快,而且还能捕捉到哈希值的变化。 目前我的解决scheme非常差:以setTimeout重新绑定。 有没有人有更好的主意? $(window).unbind( 'hashchange', hashChanged); window.location.hash = "!" + url; setTimeout(function(){ $(window).bind( 'hashchange', hashChanged); }, 100); 编辑: Amir Raminfar的build议促使我提出了一个不需要超时的解决scheme。 我添加了一个类variables _ignoreHashChange = false; 当我想默默地改变哈希值时,我这样做: _ignoreHashChange = true; window.location.hash = "!" + url; 和哈希改变事件做到这一点: function hashChanged(event){ if(_ignoreHashChange === false){ url = window.location.hash.slice(2); fetchContent(url); } _ignoreHashChange = false; }
当按下一个提交button时,通过FormData和XMLHttpRequest在我的angular度函数$scope.uploadFiles提交一个文件( $scope.files ,可以像一个文件一样多,像用户想要的那样) $scope.uploadFiles = function() { for (var i in $scope.files) { var form = new FormData(); var xhr = new XMLHttpRequest; // Additional POST variables required by the API script form.append('destination', 'workspace://SpacesStore/' + $scope.currentFolderUUID); form.append('contenttype', 'idocs:document'); form.append('filename', $scope.files[i].name); form.append('filedata', $scope.files[i]); form.append('overwrite', false); xhr.upload.onprogress = function(e) { // Event listener for when the file […]
有谁知道为什么分配身体元素的scrollTop不再有效? 例如: document.body.scrollTop = 200 导致文档不滚动。 原因 :Chrome在版本61中最终做出了符合滚动规范的规范 解决scheme :使用scrollingElement 将示例更新为: var scrollNode = document.scrollingElement ? document.scrollingElement : document.body; scrollNode.scrollTop = 200;
var xhttp=new XMLHttpRequest(); xhttp.open('GET', 'foo.xml', false); F12popup:SCRIPT5:访问被拒绝。 95行,这是xhttp.open行。 我的JavaScript看起来很完美,Firefox做我认为应该做的事情。 我已经阅读了很多与这个非常相似的问题,所以我已经检查了相同的原始策略,但是我不明白它是如何应用的,因为foo.xml和html文件在同一个目录中。 我打开了本地Intranet上的脚本权限,并告诉迈克菲需要rest五分钟。 我甚至试图运行IE作为pipe理员,所以这不能真的是一个权限问题,可以吗? 为什么IE会被拒绝访问本地文件?
我正在试图在我的网页上显示一个地图来获取坐标。 它工作正常,我可以拖放一个标记,并在input框中获取坐标。 但是当我加载网页时,我的问题就来了。 一切都很好显示,但地图,在这里你可以看到如何显示地图: 但是,如果在这一刻我调整网页,我的意思是,如果它是全屏,把它的一半。 或者,如果它只是屏幕的一部分,就把它做大或小一点。 然后,你会看到正确的地图: (我知道,这是不一样的地方,我从2次重新载入图像) 我用HTML创build网页,但是我把它称为不同的网页。 当你加载索引时,你会得到一个button href:<a href="#openMap"> 而且,部分显示将是: <div data-role="page" id="openMap" data-theme="e"> <div data-role="header" data-id="fixedNav" data-position="fixed"> blablabla <div data-role="content"> <form action=""> <div id="map_canvas" style="width:500px; height:300px"></div> blablabla 而所有的divs,form …都能正常closures。 我有很多input框和字段,我没有把它们放在这里。 然后,在我的谷歌地图脚本,我有这个: var map; function initializeNewMap() { var myLatlng = new google.maps.LatLng(43.462119485,-3.809954692009); var myOptions = { zoom: 14, center: myLatlng, mapTypeId: google.maps.MapTypeId.ROADMAP […]
在Javascript中是否有像primefacestesting和设置,信号量或locking的东西? 我有JavaScript通过自定义协议调用asynchronous后台进程(后台进程字面上运行在一个单独的进程,与浏览器无关)。 我相信我正处于竞赛状态; 后台进程返回我的testing和我的设置之间,搞砸了JavaScript的一面。 我需要一个testing和设置操作,使其成为一个真正的信号量。 以下是试图检测后台进程并将其排队的javascript代码: Call = function () { var isRunning = true, queue = []; return { // myPublicProperty: "something", call: function (method) { if (isRunning) { console.log("Busy, pushing " + method); queue.push(method); } else { isRunning = true; objccall(method); } }, done: function() { isRunning = false; if (queue.length > 0) […]
我正在使用水平滚动div元素(使用overflow: scroll )的用户界面。 我不能滚动到左边,因为它会开始回溯历史的animation。 同样,当有网站前进时,我也不能滚动到右侧。 它适用于其他浏览器,包括OS X Lion上的Chrome,它也支持刷回历史logging。 (在我开发的时候,在一个div上滚动了Safari,我添加了事件处理程序和HTML,这可能会破坏滚动,但我不知道是什么让它改变了。 理想情况下,我想阻止在特定的div上滚动(即使已经达到目的),在历史中前进或后退。 更新:我试着添加jQuery.mousewheel ,它以某种方式解决了这个问题。 (我只是附加一个空的事件处理程序.mousewheel() 。)我仍然在寻找一个明确的答案。
在学习如何使用grunt时 ,我试图做一个简单的咖啡脚本观察器/编译器。 问题是,如果我告诉watch任务要观看几个文件,而且有一个改变,它将把所有文件传递给coffee命令。 这意味着当您更改1个文件时,将重新编译与src模式匹配的所有文件。 相反,我只想重新编译与src模式相匹配的单个文件。 这里是grunt.js : module.exports = function(grunt) { grunt.initConfig({ coffee: { app: { src: ['test/cases/controller/*.coffee'], dest: 'tmp', options: { bare: true, preserve_dirs: true } } }, watch: { files: ['<config:coffee.app.src>'], tasks: ['coffee:app'] } }); grunt.loadNpmTasks('grunt-coffee'); grunt.registerTask('default', 'coffee'); }; 这是使用grunt-coffee ,基本上这是: https : //gist.github.com/2373159 。 当我运行grunt watch ,并在test/cases/controller/*.coffee grunt watch保存一个文件时,它将编译所有匹配的文件(把它们放在tmp/* )。 你怎么反而只用grunt 编译更改的文件 […]