标签: mootools

如何捕捉touchend坐标?

我试图捕捉touchend事件的触摸坐标,但未定义.该touchstart事件的作品不错,但相同的概念失败上touchend.我建立了这个代码mousedown,并mouseup工作良好.

我错过了什么?

div.addEvent("touchstart", function (event) {
    event.preventDefault(); // to avoid scrolling
    span.innerHTML = event.page.x;
});
div.addEvent("touchend", function (event) {
    span.innerHTML = event.page.x;
});
Run Code Online (Sandbox Code Playgroud)

小提琴

javascript mootools touch

30
推荐指数
3
解决办法
2万
查看次数

OO JQuery和类

我正在一个网站上工作并且第一次使用JQuery.我以前的项目主要使用MooTools,我有一些使用MooTools类结构编写的小部件类.我想将它们移植到JQuery,但它看起来就像MooTools功能在对象类方面没什么相似之处.

我搜索了一下,并没有找到太多.Digg似乎已经推出了自己的产品,但我不确定这是否是我应该使用的东西.有没有更好的办法?人们通常使用JQuery如何面向对象?封装UI小部件(或任何功能类结构)的常用方法是什么?

我将发布一个可能的MooTools小部件类的假例子:

var ZombatWidget = new Class({
    Extends: BaseWidget,
    widgetPropertyX = 'prop1',
    widgetPropertyY = 'prop2',
    attach = function(el) {
        var f = function() { 
            //do something widgety
        };
        el.addEvent('dblclick',f);
        el.addClass('widgetized');
    }
});

var z = new ZombatWidget();
z.attach($('widgetDiv'));
Run Code Online (Sandbox Code Playgroud)

我得到的是比这更大的东西,但你明白了.我是否需要将其转换prototype为类/继承结构的方法?你会如何使用JQuery编写这种对象类?

javascript oop jquery mootools

29
推荐指数
1
解决办法
6万
查看次数

如何知道在chrome控制台中定义js全局变量的文件?

如何找出使用谷歌Chrome控制台定义变量的文件和行?

例如,变量Native(来自MooTools)已在全局范围内定义.我想知道使用谷歌Chrome控制台在哪个文件中定义了这个变量.

javascript mootools google-chrome google-chrome-devtools

29
推荐指数
1
解决办法
9233
查看次数

IE10(9,8)无法识别DOCTYPE xhtml

IE10拒绝启动一些jQuery代码,到目前为止,我在某个地方发现了一个doctype错误被检测到并且在4.01过渡版本之前

在IE的开发者工具中查看我看到的控制台 HTML1524: Invalid DOCTYPE. The shortest valid doctype is "<!DOCTYPE html>".和以下(运行时修改)html:

我相信滥用DOCTYPE和一些jQuery不起作用有一个共同的原因,但没有找到它是什么

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><HTML 
xmlns="http://www.w3.org/1999/xhtml" slick-uniqueid="1"><HEAD><META 
content="IE=10.000" http-equiv="X-UA-Compatible">

<META http-equiv="X-UA-Compatible" content="IE=edge">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<TITLE>....
Run Code Online (Sandbox Code Playgroud)

虽然IE声称以标准模式运行,但仍有一些东西不起作用(主要用点击事件替换jQuery的链接来显示内容而不是加载整个新页面 - 用于使用手风琴解压缩其他菜单分支,类别标题中的原始链接用href只有jQuery无法动画手风琴的情况下才会回退)

太多其他点击事件或jquery ui函数使链接看起来像按钮无法在IE中工作在其他浏览器中工作

服务器提供的原始html如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sk" lang="sk">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
<title>...
Run Code Online (Sandbox Code Playgroud)

我被迫使用mootools和jQuery,并且知道htm atributes中的slick-uniqueid来自moo,不知道编辑doctype的人是否相同,但我确定它只发生在IE浏览器中,Chrome和Firefox只是工作好 …

jquery doctype internet-explorer mootools

29
推荐指数
2
解决办法
3万
查看次数

在JavaScript中获取数字中的小数位数的最简单方法

有没有比我的例子更好的方法来计算数字上的小数位数?

var nbr = 37.435.45;
var decimals = (nbr!=Math.floor(nbr))?(nbr.toString()).split('.')[1].length:0;
Run Code Online (Sandbox Code Playgroud)

更好的是,我的意思是更快地执行和/或使用本机JavaScript函数,即.像nbr.getDecimals()这样的东西.

提前致谢!

编辑:

修改series0ne答案后,我能够管理的最快方法是:

var val = 37.435345;
var countDecimals = function(value) {
    if (Math.floor(value) !== value)
        return value.toString().split(".")[1].length || 0;
    return 0;
}
countDecimals(val);
Run Code Online (Sandbox Code Playgroud)

速度测试:http://jsperf.com/checkdecimals

javascript jquery mootools numbers decimal-point

29
推荐指数
2
解决办法
6万
查看次数

Chrome无法释放内存,垃圾收集不会按预期发生(Mootools/MochaUI库)

背景:我目前正在使用一个使用MochaUI库的Intranet站点(使用虚拟桌面演示).我正在使用Mootools 1.2.4和MochaUI 0.9.7.在我的"虚拟桌面"实现中打开的窗口通过iframe加载其内容.在css和脚本方面,一些加载的页面非常大,因此当用户关闭窗口时,Window对象充分地被垃圾收集是很重要的.这显然是由图书馆照顾的(使用Firefox时它确实做得很好).

更新 最初发布的问题已从后续编辑/更新变得过长.标题不再准确,所以我也改变了.另外,请参阅下面的答案以获得部分解决方案.

以下是要点:

  1. Chrome就像这样:

    • Chrome无法释放为MochaUI窗口对象关闭时分配的内存.相反,Chrome的内存使用量(在字面上)冻结在窗口加载其iframe内容后达到的水平,设置内存使用量的下限直到刷新页面.
    • 随后的窗口打开/关闭,该过程使用的存储器继续增加.最终,达到某种类型的上限,并且内存使用量停止攀升,因为陡峭/开始振荡而不是急剧上升.
    • 当有问题的窗口加载相当大(内存方面)的iframe内容时,这个问题最明显.我用于所有测试目的的窗口在其iframe中加载了一个580 kb的页面(未缓存).
  2. 奇怪的是,预期的垃圾收集确实发生了

    • 浏览器随后被最小化
    • 在同一浏览器窗口中打开另一个选项卡
    • 内存时间轴正在开发人员工具中记录.(喜剧选项)
    • 这种行为是否表明任何可能解决#1的方法?

javascript mootools garbage-collection google-chrome

26
推荐指数
1
解决办法
3463
查看次数

附加到DOM之前的DOM元素宽度

我确定答案是否定的,但是在将元素附加到DOM 之前是否可以确定元素的宽度?

一旦附加,我知道我可以使用offsetWidth和offsetHeight.

谢谢

html javascript jquery mootools

25
推荐指数
5
解决办法
1万
查看次数

用于构建类似桌面的Web应用程序的Javascript库:ExtJS,jQuery,YahooUI,Mocha,SproutCore,Cappuccino,其他?

我正在评估几个Javascript UI工具包,用于构建具有类似桌面感觉的Web应用程序,主要是因为对话框和窗口管理.

我看了几个选项 - 这是我目前的评估:

  • ExtJS - 伟大的小部件库,很棒的文档!没有那么大的执照.
  • jQuery UI - 缺乏现成的窗口和对话框容器.我喜欢jQuery.
  • 雅虎 UI - 与上面相同的问题.真的很成熟(但不幸的是,不再被积极维护)并且记录良好.
  • Mocha(基于Mootools) - 不像其他人那样成熟.缺乏良好的文档.
  • SproutCore - 与上面相同.也没有窗口和对话框小部件.
  • 卡布奇诺 - 太奇怪和革命.

你对这些有什么看法?我的评估是否正确?

javascript jquery yui mootools extjs

22
推荐指数
2
解决办法
3万
查看次数

更改选择列表的选项数组

有没有办法使用javascript或mootools更改html选择列表的选项数组?

我需要用新的选项替换整个选项集.在我的ajax响应中,我收到一个填充了新HTML选项的数组,因此我尝试清空旧列表并添加新值,如下所示

$('element').options.length=0;
for (i=0; i<newSet.length; i++)
{
    $('element').options[i]=newSet[i];
}
Run Code Online (Sandbox Code Playgroud)

上面的代码在循环内的行上给了我一个未被捕获的异常.

未捕获异常:[例外..."意外错误"nsresult:"0x8000ffff(NS_ERROR_UNEXPECTED)"位置:"JS框架

只是添加对我有用的东西:

/* get new options from json*/
var new_options = response.options;

/* Remove all options from the select list */
$('idresource').empty();
/* Insert the new ones from the array above */
for (var key in new_options)
{
var opt = document.createElement('option');
    opt.text = new_options[key];
    opt.value = key;
    $('idresource').add(opt, null);
}
Run Code Online (Sandbox Code Playgroud)

html javascript mootools

22
推荐指数
4
解决办法
5万
查看次数

在Google Maps API InfoWindow中向元素添加事件

我想在Google Maps API(v3)InfoWindow中添加一个带有输入字段和提交按钮的表单.

提交时,我想调用一个函数,使用输入到输入字段中的地址启动指向服务.

这是我的代码(我目前只测试方向事件是否被触发.我已经编写完整的getDirections()事件并且可以确认它有效并在正确触发时返回指示):

我尝试使用MooTools添加一个事件监听器,如下所示:

var infoWindowContent   = "<b>Get Directions From...</b><br />"
                        + "<form id='map-form'>"
                        + "Address/Postcode: <input id='map-from-address' type='text' />"
                        + "<input type='submit' id='map-go' value='Go' />"
                        + "</form>";

var infoWindow = new google.maps.InfoWindow({
    content: infoWindowContent
});

google.maps.event.addListener(marker, 'click', function() {
    infoWindow.open(map, marker);
    dbug.log($("map-form"));
    $("map-form").addEvent("submit", getDirections);
});

function getDirections(event)
{
    dbug.log("getDirections");
    event.stop();
}
Run Code Online (Sandbox Code Playgroud)

当我在我的网站的其他地方使用MooTools时,我将所有代码放入其中 window.addEvent('load', function(){...});

请注意dbug.log($("map-form"));正确输出表单元素的控制台跟踪,但事件未触发.

我在DOM中将相同的事件添加到另一个表单(具有不同的ID)并且它工作正常.

那么,如果MooTools可以找到该元素并据说添加事件监听器,那么阻止事件触发的是什么?这是范围问题吗?

javascript mootools infowindow google-maps-api-3 mootools-events

22
推荐指数
1
解决办法
2万
查看次数