标签: dojo

在dojo中使用this.own()方法

我想知道dojo小部件中"this.own()"方法的用意.Dojo Api 1.8文档中提到了此方法,例如在diijit/form/button下.我在google上找不到任何对我有意义的东西.这就是提到方法的方法:

连接(obj,事件,方法)

不推荐使用,将在2.0中删除,使用this.own(on(...))或this.own(aspect.after(...))代替.

javascript dojo

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

Selenium WebDriver - 确定元素是否可点击(即不被dojo模态灯箱遮挡)

我编写了自动脚本来测试非常重的ajax的Web应用程序.例如,Saving...在保存设置时会显示带有文本" " 的模态对话框,而灯箱会使页面的其余部分灰显.

我的测试脚本试图在消息消失之前单击测试中的下一个链接.它几乎总是在驱动Firefox时有效,但在驱动Chrome时会显示以下错误:

Exception in thread "main" org.openqa.selenium.WebDriverException: Element is not clickable at point (99.5, 118.5). Other element would receive the click: <div class="dijitDialogUnderlay _underlay" dojoattachpoint="node" id="lfn10Dijit_freedom_widget_common_environment_Dialog_8_underlay" style="width: 1034px; height: 1025px; "></div> (WARNING: The server did not provide any stacktrace information)
Run Code Online (Sandbox Code Playgroud)

发生这种情况是因为灯箱遮挡了我想要点击的元素.我想在尝试点击链接之前等待灯箱消失.

检查灯箱不再存在不是一种有效的解决方法,因为有时会有多个级别的模态对话框和灯箱,并且没有简单的方法来区分它们.

在Selenium中是否有办法检测元素是否可点击(没有其他元素遮盖它)?尝试/捕获将是一种解决方法,但我更愿意做一个正确的检查,如果可能的话.

ajax dojo selenium webdriver

17
推荐指数
2
解决办法
4万
查看次数

如何使用goog.provide和goog.require加载我自己的js模块?

我们正在尝试将我们项目的包装从dojo切换到谷歌关闭,但到目前为止我们还没有运气.这是一个简单的例子,说明了我们要完成的任务:


<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <script type="text/javascript" src="runtime/src/core/lib/goog-rev26/base.js"></script>
        <script>
            goog.require("foo.bar");
            function main() {foo.bar.echo("hello world")}
        </script>
    </head>
<body onload="main()">
</body>
</html>

然后/foo/bar.js我有:


goog.provide("foo.bar");
foo.bar.echo = function(s) {console.debug(s);}
Run Code Online (Sandbox Code Playgroud)

我在firebug中收到的错误如下:

goog.require could not find: foo.bar
foo is not defined

当我查看Net选项卡时,没有一个http请求来获取文件 - 我希望闭包库生成一个脚本标记来获取bar.js.

救命!;)

javascript dojo google-closure google-closure-library

16
推荐指数
2
解决办法
9360
查看次数

如何防止Meteor观看文件?

我想将Dojo ToolkitMeteor一起使用.

  1. 我首先复制整个Dojo Toolkit树 /public

  2. 然后,我将它包含在客户端:

    <script src="/dojo/dojo.js" data-dojo-config="async: true"></script>`
    
    Run Code Online (Sandbox Code Playgroud)

一切正常,除了Meteor实际上监视每个文件/public的更改,以便它可以重新启动服务器.这实际上是在第一次请求期间造成非常长的延迟localhost:3000.

有没有办法阻止Meteor观看某个目录中的文件?


Dojo Toolkit是10k +文件,因此我在此处声明了EMFILE错误,并进行了更正

sudo sh -c 'echo 16384 > /proc/sys/fs/inotify/max_user_watches'
Run Code Online (Sandbox Code Playgroud)

dojo meteor

16
推荐指数
2
解决办法
3518
查看次数

Javascript form.submit()无法在Firefox中运行

这里,这里这里以及其他地方有几个问题/答案,但它们都看起来特定于JQuery并且似乎不适用于此(例如,我不是创建一个新的Form对象,这是一个现有的表单,同时我根本使用Jquery.

我有一个表单,由于IE7兼容性的原因,在提交之前必须进行修改.我必须BUTTON从表单中删除所有标记,然后添加一个隐藏字段,但这都是现有HTML页面上的现有表单.此代码在IE和Chrome中正常运行,但在Firefox中不起作用(版本23和24都经过测试).

    buttonClickFunction(formName, buttonObject) {
        var formObject = document.forms[formName];
        var i = 0;

        // Strip out BUTTON objects
        for (i=0;i<formObject.length;i++) {
            if (formObject[i].tagName === 'BUTTON') {
                formObject[i].parentNode.removeChild(formObject[i]);
                i--;
            }
        }

        // Create new field
        var newField = document.createElement('input');
        newField.type = 'hidden';
        newField.id=buttonObject.id;
        newField.name = buttonObject.name;
        if (buttonObject.attributes['value'] != null) {
            newField.value = buttonObject.attributes['value'].value;
        } else {
            newField.value = buttonObject.value;
        }

        // Submit form
        formObject.appendChild(newField);
        document.forms[formName].appendChild(newField);
        document.forms[formName].submit();
    }
Run Code Online (Sandbox Code Playgroud)

除了document.forms[formName].submit() …

javascript forms dojo

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

在实习生中加载项目目录之外的依赖项

这个问题的答案并没有回答我的问题.

我想使用Intern作为我的测试框架从项目根目录外部加载依赖项.我目前正在使用以下目录结构:

www/
    project1/
        app/
        lib/
    project2/
        app/
        lib/
    intern-tests/
        node_modules/
        tests/
            functional/
                project1-tests/
                project2-tests/
            unit/
                project1-tests/
                project2-tests/
            intern.js
        Gruntfile.js
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在制作intern-tests自己的项目,并希望此目录能够保存我所有项目的所有测试.我已经设置了我的Gruntfile来执行使用grunt exec库将命令转换为的测试.一切正常,但我的单元测试无法加载和目录中的依赖项.grunt projectNamegrunt test --project=projectNameproject1/project2/

例如,这是我的单元测试之一:

define([
    'intern!object',
    'intern/chai!assert',
    'jquery',
    '../../../../project2/lib/js/var/document',
    '../../../../project2/lib/js/exports/file/functions/resizeInput'
], function(registerSuite, assert, $, document, resizeInput) {
    registerSuite({
        name: 'functions',
        resizeInput: function() {
            var $input = $(document.createElement('input'));
            resizeInput($input, 8, 20, 450, 200);
            assert.equal($input.width(), 450);
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

并运行该测试给我以下错误:

SUITE ERROR
Error: Failed to load module ../project2/lib/js/var/document from …
Run Code Online (Sandbox Code Playgroud)

javascript dojo unit-testing amd intern

16
推荐指数
1
解决办法
541
查看次数

是否有像JavaScript中的Java Set这样的数据结构?

我想在JavaScript中使用可用于存储ID数量的数据结构.我应该能够检查该集合中是否存在密钥,例如Java集合.

我希望得到如下相同的行为(此代码在Java中):

Set<String> st = new HashSet<String>();
//add elemets

if(st.contains("aks") ){
  //do something
}
Run Code Online (Sandbox Code Playgroud)

我想要一个JavaScript/dojo等价的上述代码.

javascript java dojo set

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

如何通过Jenkins运行Dojo DOH单元测试?

有没有人尝试将Dojo DOH单元测试与Jenkins集成?

我想做以下事情,但如果已经完成,我不想重新发明它.所以,我在想:

  1. 从Jenkins的构建后步骤开始进行DOH测试并等待结果
  2. 在无头浏览器中运行测试(例如Crowbar)
  3. 从Crowbar返回的HTML中解析成功/错误计数
  4. 查找(或编写)一个Jenkins插件,如果有失败的测试,(a)将失败,(b)渲染测试结果,(c)可能将结果集成到CI游戏插件中

问题:

  1. 以前做过吗?
  2. 您是否看到上述大纲的任何问题?
  3. 你知道Jenkins插件会有所帮助,还是我必须建立自己的插件?

javascript dojo unit-testing doh jenkins

15
推荐指数
1
解决办法
2710
查看次数

如果库吞没所有异常,我如何调试我的异步,基于承诺的代码?

问题

JSFiddle:http: //jsfiddle.net/missingno/Gz8Pe/2/

我有一些看起来像这样的代码:

var d = new Deferred();
d.resolve(17);
return d.then(function(){
     //do some stuff...
})
.then(function(){
    var obj = a_funtion_that_returns_null_on_IE();
    var x = obj.some_property; //BOOM!
});
Run Code Online (Sandbox Code Playgroud)

问题是,当我在IE上时,我只能看到'obj' is null or not an object错误,没有任何对相应行号的引用,也没有调试器停在违规行(就像我希望的那样).

这种问题使得代码很难调试,我现在能想到的唯一解决方案(搞乱控制流库或使用调试器或console.log进行逐步调试)是我的事情.宁可不必做.

我的想法是怎么回事

为了允许在链被触发后添加errbacks,then将抢先捕获回调抛出的任何异常.我认为这是IE调试器没有停止错误或显示通常的错误消息的原因,其中包含行号.

没有行号的错误消息来自控制流库:它提供了一个deferredOnError挂钩,只要捕获并保存以供日后使用,就会调用该挂钩,默认行为是console.error-the Error对象:

dojo.config.deferredOnError = function(err){
    //a chance to log the exception after it is captured by "then"
    //or do other things with it
    console.error(err);
}
Run Code Online (Sandbox Code Playgroud)

遗憾的是,我无法找到从IE中的错误对象获取行号或堆栈跟踪的方法,并且以一种不允许我重新抛出异常并让它冒泡到顶层的方式调用钩子.

我想要的是

我希望有一种更好的方法来调试异步代码,然后逐步调试调试器.在最好的情况下,有一种方法可以让调试器暂停异常(就像在未处理的异常上一样),或者至少是 …

javascript debugging dojo promise deferred

15
推荐指数
1
解决办法
6679
查看次数

如何在dgrid中使用dnd实现行重新排序

我在dgrid中创建了一个连接到JsonRest存储的网格.这会从金字塔后端加载数据.我还在商店中添加了DnD扩展名.DnD工作,但我不知道如何在拖动行时发送任何有意义的数据.目前它发送两个请求,一个GET和一个PUT,但PUT只包含行中的数据,但我没有用来更新数据库中的顺序.

那么在我的网格中需要什么配置,以便我可以获得新的订购信息?

javascript dojo drag-and-drop dgrid

15
推荐指数
1
解决办法
1714
查看次数