小编jba*_*bey的帖子

是否可以模拟window.location对象进行qUnit测试?

假设我有一个实用函数,为了简单起见(真实的东西很复杂且无关紧要),返回当前窗口的查询字符串.

var someUtilityFunction = () {
    return window.location.search.substring(1);
};
Run Code Online (Sandbox Code Playgroud)

现在我想在qUnit中对这个函数进行单元测试(不确定测试工具是否相关):

test('#1 someUtilityFunction works', function () {
    // setup
    var oldQS = window.location.search;
    window.location.search = '?key1=value1&key2=value2&key3=value3';

    var expectedOutput = 'key1=value1&key2=value2&key3=value3';

    // test
    equals(someUtilityFunction(),
        expectedOutput,
        'someUtilityFunction works as expected.');

    // teardown
    window.location.search = oldQS;
});
Run Code Online (Sandbox Code Playgroud)

这里的问题是设置window.location.search为不同的查询字符串会导致页面重新加载,实质上是进入无限的请求循环.有没有办法模拟window.location对象而不someUtilityFunction函数进行任何更改?

javascript unit-testing qunit query-string

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

CSS溢出隐藏导致文本对齐问题

我有一些非常简单的标记,我希望长文本被截断为"..."

.topRow div {
  display: inline-block;
}

#name {
  max-width: 70%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
Run Code Online (Sandbox Code Playgroud)
<div class="topRow">
  <div id="edit">
    <div id="pre">Before -</div>
    <div id="name">Some long text that should get truncated when it passes the max width</div>                    
    <div id="post">- After</div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

小提琴:http://jsfiddle.net/xyPrv/3/

在此输入图像描述

问题是,当我添加overflow: hidden到div时,它会使文本跳起几个像素,并且与文本周围的其余文本不一致.

是什么导致这种垂直运动?无需手动将文本向下推(带position: relative; and top: 5px),如何干净地将文本对齐?

html css overflow alignment

14
推荐指数
1
解决办法
4556
查看次数

jQuery .removeClass()没有做任何事情的奇怪问题

我有一些代码将类添加到元素,然后尝试删除它们,并在1秒后添加不同的类.我得到一些非常奇怪的行为,我甚至无法在一个简单的jsfiddle示例中重现.

这是我的相关JavaScript代码:

console.log('before destroyed: ' + currentTile.get(0).className);
currentTile.addClass(classes.destroyed);
console.log('after destroyed: ' + currentTile.get(0).className);

setTimeout(function () {
    console.log('before blanking: ' + currentTile.get(0).className);
    currentTile.removeClass().addClass(classes.blank + ' ui-draggable');
    console.log('after blanking: ' + currentTile.get(0).className);
}, 2000);
Run Code Online (Sandbox Code Playgroud)

以下是控制台的说法:

在此输入图像描述

正如你所看到的,添加destroyed该类工作正常,但对removeClass()内部的调用setTimeout似乎什么都不做,然后.addClass(classes.blank + ' ui-draggable');似乎也正常工作.另外,如果我将一个类传递给removeClass它,那么删除那个没有问题的类.

如果这是一个背景问题或currentTile错误的元素,我会认为addClass这也会失败?任何人都知道这里发生了什么?

附加信息:jQuery最新(我认为v.1.9.0),jQuery UI v 1.10.0,Chrome v.24.0.1312.56 m


编辑:问题似乎与jQuery UI直接相关,可以在这个小提琴中看到发生.


编辑2:这被确认为jQuery中的一个错误,并已得到修复.

css jquery jquery-ui settimeout

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

在调整大小时使响应容器对元素进行捕捉

我有一个包含常量宽度项的动态宽度容器div.我希望能够调整容器的大小,以便它只显示整个项目,从不切割右边的项目.

的jsfiddle

例如,用户的屏幕可能会呈现显示5个项目:

在此输入图像描述

如果该用户开始缩小其屏幕的宽度,只要该条不再宽到足以容纳5个完整项目,我希望它缩小到仅显示4个项目.

坏:

在此输入图像描述

好:

在此输入图像描述

我知道这可以通过使用CSS3媒体查询来实现,但我想避免为每个不同数量的元素编写不同的断点.我也想避免使用javascript resize事件处理程序,但我不确定如果没有它可行.

html javascript css css3 responsive-design

12
推荐指数
1
解决办法
1946
查看次数

发起单向ajax通话

我有一个WCF服务,第一次调用它需要很长时间来处理,然后缓存这些结果HttpRuntime.Cache.为了初始化这个缓存,我想从javascript触发一个fire-and-forget ajax调用.

现在我在页面中有这个javascript:

$.ajax({
    type: 'GET',
    url: getServiceURL() + 'PrimeCacheAjax',
    contentType: 'application/json; charset=utf-8'
});
Run Code Online (Sandbox Code Playgroud)

PrimeCacheAjax函数只是执行伪呼叫来填充缓存.

这种方法的唯一问题是具有此ajax调用的页面是一种登录页面,它执行一些javascript,打开另一个窗口并关闭自己.当窗口在服务器响应之前自行关闭时,我在fiddler中看到一个已取消的请求.我担心这可能会导致ajax呼叫无法到达服务器的情况,这可能吗?

有没有办法指定(使用$.ajax())没有响应,或者它真的不重要?

javascript ajax wcf jquery

11
推荐指数
1
解决办法
2447
查看次数

泛型,接口和转换问题

我最近为我实现的一些自定义用户控件添加了一个界面.界面非常基础.它有一种支持链接的方法:

Public Interface IMyInterface(Of T As WebControl)
    Function DoSomething() As T
End Interface
Run Code Online (Sandbox Code Playgroud)

实现也很基本:

Public Class MyCustomControl
    Inherits CompositeControl
    Implements IMyInterface(Of MyCustomControl)

Public Function DoSomething() As MyCustomControl _
    Implements IMyInterface(Of MyCustomControl).DoSomething
    ' do stuff

    Return Me
End Class
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切正常.当我尝试遍历所有实现IMyInterface接口的控件集合时会出现问题,如下所示:

Dim myList = New List(Of IMyInterface(Of WebControl))

myList.Add(someCustomControl)

myList.ForEach(Sub(i) i.DoSomething())
Run Code Online (Sandbox Code Playgroud)

someCustomControl是一个MyCustomControl实现IMyInterface(Of MyCustomControl)而不是IMyInterface(Of WebControl).

我在第二行(我尝试添加someCustomControl)中收到此错误:

Option Strict On禁止从"MyCustomControl"到"IMyInterface(Of WebControl)"的隐式转换.

有没有办法解决这个错误?我很接近它的工作,但我不太了解泛型超越这一点.

vb.net generics user-controls interface

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

重新缩放PNG的自定义方法会失去透明度

嘿伙计们,我正在为支持java的手机开发j2ME游戏.我试图使用以下方法缩放透明PNG:

// method derived from a Snippet from http://snippets.dzone.com/posts/show/3257
// scales an image according to the ratios given as parameters

private Image rescaleImage(Image image, double XRatio, double YRatio)
{
    // the old height and width
    int sourceWidth = image.getWidth();
    int sourceHeight = image.getHeight();

    // what the new height and width should be
    int newWidth = (int)(XRatio * sourceWidth);
    int newHeight = (int)(YRatio * sourceHeight);

    Image newImage = Image.createImage(newWidth, newHeight);
    Graphics g = newImage.getGraphics();

    for (int y = 0; y < …
Run Code Online (Sandbox Code Playgroud)

java png transparency java-me image-scaling

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

如何随机生成除法a/b = c的元素,其中c只有一个小数?

这更像是一个基本的数学/编程问题.我需要生成一个分区a/b = c.我将给用户a和b他必须回答c,但c只能有一个小数.例如,c = 5.2是可以的,但5.23太多了,因为用户是孩子.所以我需要一种算法,可以从所有可能的组合中随机生成这种除法,其中a必须小于x,b必须小于y,c只能有一个小数.此外,a和b必须是整数.

我正在寻找一种更优雅的解决方案,而不是尝试数字并检查它们,直到产生正确的组合.此外,这是针对网页内容,所以我更喜欢使用javascript,但如果需要,可以在php中完成.¿有人知道我该怎么办?我在数学上并不擅长.

非常感谢你提前.

javascript php math

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

如何判断小部件打开的日期选择器

此问题类似于检查datepicker是否已打开,但它与属于其上具有多个datepicker控件的页面有关.

当页面上有多个日期选择器时,jQuery UI似乎只创建一个在所有日期选择器之间共享的日期选择器小部件.

我试图通过datepicker UI或其他方式找到一种方法来找出小部件打开的日期选择器.不幸的是,尝试过的真实测试如下:

$('#someDatepicker').datepicker('widget').is(':visible');
Run Code Online (Sandbox Code Playgroud)

无论窗口小部件打开哪个日期选择器,都返回true,只要它在某处可见即可.

javascript jquery jquery-ui jquery-ui-datepicker

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

API获取和浏览器崩溃后,Swagger UI冻结

我有一个ASP.NET WebAPI项目,我试图用Swagger UI替换旧的XmlDocumentationProvider页面.我正在使用swashbuckle swagger for webAPI 5.3.1 nuget package.

我能够导航到localhost/MyApp/swagger,我可以在fiddler中看到它调用localhost/MyApp/swagger/docs/v1来检索代表我的API的JSON字符串.调用成功,JSON大约240KB,JSON有效.此时,Chrome标签会在使用"Aw snap"页面崩溃之前冻结约30秒.控制台中没有错误.

尝试验证此在线验证器中的api JSON是否正常工作,并说如果我取消选中所有三个"Follow ___ $ refs"复选框,则说明规范/架构是有效的.如果勾选了这些框中的任何一个,则大约需要30秒,然后该工具崩溃.

不幸的是,我不能在某处粘贴我的整个webAPI规范,但我会说这是一个非常庞大且非常复杂的内部业务应用程序.我们的一些DTO具有循环引用(与DTO本身相同类型的属性),我怀疑它可能会导致问题,但是没有任何记录或调试我无法确定,并且有超过1000个DTO类我不想梳理它们全部检查.

有没有办法打开swashbuckle(在服务器上)或swagger UI(在客户端上)的任何类型的日志记录或调试?有没有人遇到这个问题浏览器崩溃,并知道是什么导致它?提前谢谢.

.net asp.net-web-api swagger swagger-ui swashbuckle

5
推荐指数
3
解决办法
3620
查看次数