小编Tho*_*nes的帖子

根据部分属性查找HTML

有没有办法使用javascript(特别是jQuery)来查找基于部分属性名称的元素?

我不是在寻找任何找到这些链接中引用的部分属性值的选择器:

但还有更多的东西

<div data-api-src="some value"></div>
<div data-api-myattr="foobar"></div>
Run Code Online (Sandbox Code Playgroud)

$("[^data-api]").doSomething()
Run Code Online (Sandbox Code Playgroud)

查找具有以"data-api"开头的属性的任何元素.

javascript jquery jquery-selectors

21
推荐指数
2
解决办法
3471
查看次数

使用render()控制图像输出的DPI

使用phantomjs,有没有办法控制使用该page.render(filename)方法栅格化Web内容图像时使用的DPI设置?

我找不到任何可以通过接口api来控制它的东西,但不知道是否有人已经找到了一种方法来做到这一点.

我们的商业案例如下:

通过Web应用程序创建的自定义HTML内容将提供给我们的rasterize.js幻像进程,并查询特定标记以设置客户端矩形.此客户端矩形呈现为HTML的PNG,然后可以在其他位置用作图像.

我们希望得到的PNG的分辨率高于默认值,因为在某些奇怪的字体大小/粗体组合上对文本进行锯齿处理.

dpi rasterizing phantomjs

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

镀铬空满足​​保留造型

当我在页面中有一个满足的部分时,Chrome似乎在做一些奇怪/有趣/混乱的事情.如果你有一个文本部分包含一个<span>(可能是其他标签,我不知道),有一个类应用于它,它将其他样式应用于文本(字体系列,颜色等),然后删除所有文本可编辑的部分.当您再次开始键入时,文本看起来与开始删除文本时的文本相同,但似乎使用原始计算CSS进行样式设置,而不是使用适当类的跨度.

http://jsfiddle.net/tomprogramming/wS4Gp/

知道为什么会这样,或者我可以关掉它吗?Firefox和IE似乎都在保持与其中的类的跨度.

这就是我的开始

<span class="level1" style="font-weight:bold;">This is level'd text</span>
Run Code Online (Sandbox Code Playgroud)

这就是我最终的结果

<span style="color: rgb(255, 255, 255); font-family: helvetica, arial, sans-serif; font-size: 48.18181610107422px; font-weight: bold;">This is level'd text</span>
Run Code Online (Sandbox Code Playgroud)

和相关的CSS

.editable .level1 {
    color: #fff;
    font-size:3em;
    font-family:helvetica, arial, sans-serif;
}
Run Code Online (Sandbox Code Playgroud)

我理解发生了什么,它试图表现得像Word和其他保留你造型的处理器; 但是,这些级别在我们的编辑器中很重要,应予以保留.如果他们不能,我宁愿只关闭这个"功能".

google-chrome contenteditable

9
推荐指数
1
解决办法
754
查看次数

新行,并且对嵌套的不可编辑标记感到满意

我对contenteditableHTML中的元素有一个奇怪的例子.我们有一个富文本编辑器,客户可以将预制模板(由我们)加载到其中,然后可以根据需要修改该模板(主要是).

我们模板的部分标记为不能直接编辑,但仍然可以删除等.但是,当一个这样的元素是一行(直接在<br/>标记之后)和用户的第一个元素时似乎存在问题点击DEL上面的线.因为它contenteditable=false,浏览器似乎删除了不是<br/>整个不可编辑的跨度.

示例HTML就是这样的

<div contenteditable=true>
    <span>blah blah blah</span><br/>
    <span contenteditable="false">You cant edit this value directly</span>
</div>
Run Code Online (Sandbox Code Playgroud)

如果用户将光标放在后面blah blah blah,并点击DEL整个下一个内容,则可编辑的内容被删除,而不是换行符.

有没有办法,javascript或其他方式来解决这个问题?

我试图检测光标位置(使用rangy),插入临时空间等等,但我似乎无法让它具有所需的行为,这就是不可编辑的标签被带到了前一个线.

我们将编辑器的使用仅限于Chrome,因此无需担心IE或FF.

jsfiddle的一个例子

html contenteditable

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

使用ImageResizer.net确定图像的当前大小

我们最近开始在GDI +上使用ImageResizer.Net来动态调整ASP.NET MVC 4应用程序上的图像.

是否有一种方法,仅使用ImageResizer,来确定图像的实际分辨率(DPI,PPI,无论你想要调用它)(以字节数组的形式读入).我们目前有这样的工作流程,在需要时将图像调整为指定的较低分辨率:

//pseudo-code
var image = (Bitmap)Bitmap.FromStream(contentStream)
var resX = image.HorizontalResolution;
var resY = image.VerticalResolution;
//calculate scale factor
//determine newHeight and newWidth from scale
var settings = new ResizeSettings("width={newWidth}&height={newHeight}")
var newImage = ImageBuilder.Current.Build(image, someNewImage, settings);
Run Code Online (Sandbox Code Playgroud)

这很好用,但它混合了GDI +和ImageResizer,并且有很多流打开和关闭相同的数据(实际代码有点冗长,有很多using语句).

有没有办法只使用ImageResizer确定水平和垂直分辨率?我无法立即在文档中找到任何内容.

目前,我们已经使用了托管API,但最终将使用MVC路由.

c# imageresizer

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

空字符串+ null ="null"?

今天我遇到了一个奇怪的事情,同时在我们的应用程序中排除了流氓AJAX请求.我们使用jQuery.param构建请求字符串将数据发送回服务器.

在一个场景中,提供给param函数的对象有一个null选项,所以它看起来像这样:

var myData = {
     x : 1,
     y : null
};
var params = jQuery.param(myData);
Run Code Online (Sandbox Code Playgroud)

这段代码实际上埋藏在骨干集合中,但原理是一样的.

现在,当服务器收到变量的参数y是文字字符串"null"而不是存在时,我感到非常震惊null.

经过一番挖掘后,我发现encodeURIComponent(null)返回字符串"null"并获得更有趣的'' + null收益"null".这在Chrome 23以及Firefox 11上进行了测试.

最终发送到jQuery.param函数的对象是从函数的参数构建的,而null是参数的完全有效值.我只是通过构建对象来解决它y : param || '',但我很好奇本机JS函数的明显错误,以及为什么'' + null = "null",因为它们通常被认为是两个不同的概念.

javascript encodeuricomponent

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

Date.getTimezoneOffset倒置?

我的服务器有一个JSON响应,在几秒钟内给出了我的UTC Unix时间戳.我正在将其解析为将在图表中使用的JavaScript日期(在用户的语言环境中显示时间).

我显然必须将我的时间戳(以UTC格式)哄骗到浏览器的语言环境中,因此我编写了一个Date在浏览器的语言环境中创建新函数的函数,调用getTimezoneOffset()它来获取当前语言环境中的"以分钟为单位的偏移量",按照MDN,将两者都转换为毫秒,并返回总和.现在我在用户的语言环境中有一个JavaScript友好的Unix时间戳.

但是,我没有.

事实证明,(new Date()).getTimezoneOffset()在GMT-5中返回(正)300,在GMT + 2中返回-120.为什么偏移是倒置的?我原以为偏移量与时区的符号相符 - 即:我需要减去300分钟才能达到GMT-5,并且需要120分钟才能达到GMT + 2.相反,我必须减去返回的值getTimezoneOffset

javascript date timezone-offset

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

为什么最后一次触发的拖动事件的x和y坐标为负?

JSFiddle:http : //jsfiddle.net/ypYTT/1/

如您所见,我有一个非常简单的标记,其中的图像(最终)将在更改背景位置周围拖动。如果您稍加拖动,就会看到触发的事件的x,y坐标,如您所愿,但是上一次触发的事件似乎总是具有负的X,Y坐标对,这似乎取决于“结果” jsfiddle框架。

上一次事件的这些坐标是什么,为什么它们是负数?它们是从“拖动”类型的事件中触发的,但是只有在最终的mouseup发生时才发生(从拖动中不触发mouseup,因为那没有意义)。

标记HTML

<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" />
Run Code Online (Sandbox Code Playgroud)

的CSS

img {
    background: linear-gradient( to left top, blue, red);
    width:200px;
    height:200px;
    margin:20px;
}
Run Code Online (Sandbox Code Playgroud)

的JavaScript

$('img').on('dragstart drag dragstop', function(e){
    console.log(e.originalEvent);
});
Run Code Online (Sandbox Code Playgroud)

javascript jquery drag

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

快速退出方法或构造函数是否有好处?

我认为这部分与短路逻辑有关,但我找不到任何直接回答我问题的问题.可能的相关问题:使用短路评估的好处,为什么要使用短路代码?

考虑以下两个代码块,这两个代码块都是类的可能构造函数

public MyClass(OtherClass other){
    if (other != null) {
       //do something with other, possibly default values in this object
    }
}
Run Code Online (Sandbox Code Playgroud)

还有这个

public MyClass(OtherClass other){
    if (other == null)  return;

    //do something with other, possibly default values in this object
}
Run Code Online (Sandbox Code Playgroud)

对前者做后者有什么好处?构造函数中没有其他代码,只是使用该other对象构造此代码的代码.

c# constructor short-circuiting

4
推荐指数
1
解决办法
126
查看次数

javascript中的函数有范围吗?

如果函数有范围,它们应该在该范围内执行,但在这里我认为它是不同的请参阅代码:

function foo() {
    var privateVal = "Private Val";
    this.publicVal = "Public Val";

    var privateAlert = function (str) {
        alert(str + this.publicVal);
        alert(str + privateVal);
    }

    this.Run = function () //see here
    {
        privateAlert("Private Call: ");

        this.publicAlert = privateAlert;
        this.publicAlert("Public Call: ");

        privateAlert = this.publicAlert;
        privateAlert("Private Call: ");
        this.publicAlert("Public Call: ");
    }
}

var bar = new foo();
bar.Run();
Run Code Online (Sandbox Code Playgroud)

创建新对象时,Run()将成为对象的公共方法或仅属于var的方法bar.该方法不应该能够从其中执行该privateAlert()功能; 因为函数具有范围,所以它只能从已声明的函数内执行,但是这个函数已经失去了创建它的范围并且它仍然被执行.请澄清一下吗?

javascript scope

3
推荐指数
1
解决办法
87
查看次数