小编NVI*_*NVI的帖子

JavaScript相当于Python的__setitem__

var obj = {}
obj.__setitem__ = function(key, value){
  this[key] = value * value
}
obj.x = 2  // 4
obj.y = 3  // 9
Run Code Online (Sandbox Code Playgroud)

JavaScript没有__setitem__,这个例子显然不起作用.

在python __setitem__中的工作方式如下:

class CustomDict(dict):
  def __setitem__(self, key, value):
    super(CustomDict, self).__setitem__(key, value * value)

d = CustomDict()
d['x'] = 2  # 4
d['y'] = 3  # 9
Run Code Online (Sandbox Code Playgroud)

是否可以在JavaScript中实现__setitem__行为?所有棘手的解决方法都会有所帮助.

javascript python syntactic-sugar

8
推荐指数
4
解决办法
795
查看次数

3列:一列有最大宽度,另外两列有最小宽度

三列必须填充父容器的宽度.左列和右列的宽度不得小于150像素.中心列的宽度不得超过200像素.

我创建了一个使用JavaScript进行布局的参考页面.是否可以使用纯CSS进行相同的布局?

截图http://elv1s.ru/files/html+css/min-width_max-width_columns.png

它至少应该适用于IE 8,Firefox 3.6,Chrome 7,Safari 5和Opera 10.63.

html css layout

8
推荐指数
1
解决办法
1652
查看次数

Backbone.js:避免查看→模型→查看双重转换

我正在努力建立这个:
在此输入图像描述

当我在左侧编辑字段时,它应该更新右边的字段,反之亦然.

  • 在输入字段中编辑值会导致文本光标在其末尾跳转.

  • 在华氏温度字段中键入"2"将替换为1.999999999999,如屏幕截图所示.这是因为双重转换:
    视图的Fº→模型的Cº→视图的Fº.

畏缩

我怎么能避免这种情况?


更新:

我想知道在Backbone.js等MVC框架中处理双向绑定的优雅方式.

MVC

var Temperature = Backbone.Model.extend({
    defaults: {
        celsius: 0
    },
    fahrenheit: function(value) {
        if (typeof value == 'undefined') {
            return this.c2f(this.get('celsius'));
        }
        value = parseFloat(value);
        this.set('celsius', this.f2c(value));
    },
    c2f: function(c) {
        return 9/5 * c + 32;
    },
    f2c: function(f) {
        return 5/9 * (f - 32);
    }
});


var TemperatureView = Backbone.View.extend({
    el: document.body,
    model: new Temperature(),
    events: {
        "input #celsius": "updateCelsius",
        "input #fahrenheit": "updateFahrenheit"
    },
    initialize: function() {
        this.listenTo(this.model, …
Run Code Online (Sandbox Code Playgroud)

data-binding model-view-controller model-binding backbone.js

8
推荐指数
1
解决办法
1860
查看次数

JavaScript中的异步编程,没有混乱的回调

我想将异步函数转换为同步函数.

function fetch() {
  var result = 'snap!';
  $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", function messyCallback(data){
    result = data;
  });
  return result;
}

document.write(fetch());?
Run Code Online (Sandbox Code Playgroud)

看到实际行动

结果总是"快速!",因为$.getJSON完成后运行fetch().

我的第一个想法是:

function fetch() {
  var result = 'snap!';
  $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", function messyCallback(data){
    result = data;
  });
  while (true) {
    if (result != 'snap!') return result;
  }
}
Run Code Online (Sandbox Code Playgroud)

它不起作用,也吹掉了浏览器.

在JS 1.7中读到了关于生成器和迭代器的内容,但我不知道如何将它应用于我的问题.

这个问题并不是关于jQuery的.而不是$ .getJSON可以是任何其他异步函数.

javascript synchronization asynchronous callback

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

有没有办法获取 CSS 属性的所有有效关键字?

第二轮。首先是“如何获取 WebKit 中所有受支持的 CSS 属性? ”。

我正在寻找神奇的CSSkeywords功能:

CSSkeywords('float') --> ['left', 'right', 'none']
CSSkeywords('width') --> ['auto']
CSSkeywords('background') --> [
  ["repeat", "repeat-x", "repeat-y", "no-repeat"], 
  ["scroll", "fixed"], 
  ["top", "center", "bottom", "left"],
  /*regexp for color*/,
  /*regexp for url*/,
  "none"
]
Run Code Online (Sandbox Code Playgroud)

javascript css dom

7
推荐指数
1
解决办法
283
查看次数

为什么Google Image会使用画布绘制图像?

更新: Google图片不再使用<canvas>.


我注意到Google Images正在使用画布来渲染图像.<img>用作不支持画布的浏览器的后备.

<a class="rg_l" style="..." href="...">
  <canvas
    id="cvs_NcG8skPEDu7FWM:b"
    style="display:block"
    width="83"
    height="113">
  </canvas>
  <img 
    class="rg_i"
    id="NcG8skPEDu7FWM:b"
    data-src="http://t0.gstatic.com/images?q=tbn:ANd9GcQCB5NEbEUQhtmFI098HLSkfmoHTBtUfERUNkNKrhgFbtFBxZXY9ejXn_pUGg"
    height="113"
    width="83"
    style="width:83px;height:113px"
    onload="google.isr.fillCanvas(this);google.stb.csi.onTbn(0, this)"
    src="http://t0.gstatic.com/images?q=tbn:ANd9GcQCB5NEbEUQhtmFI098HLSkfmoHTBtUfERUNkNKrhgFbtFBxZXY9ejXn_pUGg">
</a>
Run Code Online (Sandbox Code Playgroud)

什么是使用<canvas>而不是<img>

html canvas

7
推荐指数
1
解决办法
768
查看次数

在线JSONP转换器/包装器

我想获取文件源并将其包装在JSONP中.

例如,我想从我不拥有的主机中检索pets.txt作为文本.我想通过使用客户端JavaScript来做到这一点.

我正在寻找可以将任何东西转换为JSONP的在线服务.


YQL

Yahoo Query Language就是其中之一.

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D"http://elv1s.ru/x/pets.txt"&format=json&callback=grab

如果robots.txt未阻止URL,则此方法有效.YQL 尊重robots.txt.我无法获取http://userscripts.org/scripts/source/62706.user.js,因为它是通过robots.txt阻止的.

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D"http://userscripts.org/scripts/source/62706.user.js"&format=json&callback=grab

"禁止":"域名的robots.txt禁止抓取网址:http://userscripts.org/scripts/source/62706.user.js "


所以我正在寻找其他解决方案.

xss json jsonp web-services cross-domain

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

如何在WebKit中获取所有受支持的CSS属性?

在Firefox,Opera和IE中我可以通过以下方式获取它们:

>> for (k in document.body.style) console.log(k)
-> opacity
   background
   height
   textAlign
   .
   ... long list ...
   .
   pointerEvents

在WebKit中,结果完全不同:

>> for (k in document.body.style) console.log(k)
-> cssText
   length
   parentRule
   getPropertyValue
   getPropertyCSSValue
   removeProperty
   getPropertyPriority
   setProperty
   item
   getPropertyShorthand
   isPropertyImplicit

更新:最新的WebKit确实在HTMLElement.style中枚举CSS属性,与所有浏览器相同.

javascript css dom webkit

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

使资产管道与Chrome DevTools自动保存一起使用

Chrome DevTools自动保存不适用于Rails Asset Pipeline.问题的罪魁祸首是资产URL - 我无法通过其URL解密实际文件路径.例如,/ assets/application.css可以引用app/assets/stylesheets/application.css,lib/assets/stylesheets/application.css或vendor/assets/stylesheets/application.css.

我想知道,如何将资产URL更改为以下之一:

  • /app/assets/stylesheets/application.css(完全匹配实际文件路径,完美解决方案)
  • /assets/application.css?source_url=app/assets/stylesheets/application.css(介绍source_url查询参数)

我很感激为此编写Rails插件的任何帮助.


更新:向链轮填充了一个问题.

ruby-on-rails ruby-on-rails-plugins google-chrome-devtools asset-pipeline

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

使用jsoup解析HTML并保留原始内容

我想替换HTML文件中的一些元素,保持所有其他内容不变.

Document doc = Jsoup.parse("<div id=title>Old</div >\n" +
        "<p>1<p>2\n" +
        "<table><tr><td>1</td></tr></table>");
doc.getElementById("title").text("New");
System.out.println(doc.toString());
Run Code Online (Sandbox Code Playgroud)

我希望有以下输出:

<div id=title>New</span></div >
<p>1<p>2
<table><tr><td>1</td></tr></table>
Run Code Online (Sandbox Code Playgroud)

相反,我有:

<html>
 <head></head>
 <body>
  <div id="title">New</div>
  <p>1</p>
  <p>2 </p>
  <table>
   <tbody>
    <tr>
     <td>1</td>
    </tr>
   </tbody>
  </table>
 </body>
</html>
Run Code Online (Sandbox Code Playgroud)

Jsoup补充说:

  1. 关闭p标签
  2. 双引号属性值
  3. TBODY
  4. HTML,头部和身体元素

我可以将修改后的HTML序列化为原始版本吗?杰里科做到了这一点,但它没有像Jsoup那样提供灵活的DOM操作方法.

java parsing html-parsing jsoup

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

顺利抓住

我做了一个简单的抓取演示页面.它没有任何缓和/加速.我想使用JavaScript 在kulesh.info(Flash网站)上进行相同的缓动/加速.我怎样才能做到这一点?

在JavaScript中平滑抓取(滚动,拖动)的任何示例都是有用的,也是一种语言无关的算法.

javascript user-interface acceleration

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

JavaScript:检查数组是否是另一个数组的子序列(写一个更快的天真字符串搜索算法)

[5, 4, 4, 6].indexOfArray([4, 6]) // 2
['foo', 'bar', 'baz'].indexOfArray(['foo', 'baz']) // -1
Run Code Online (Sandbox Code Playgroud)

我想出了这个:

Array.prototype.indexOfArray = function(array) {
    var m = array.length;
    var found;
    var index;
    var prevIndex = 0;
    while ((index = this.indexOf(array[0], prevIndex)) != -1) {
        found = true;
        for (var i = 1; i < m; i++) {
            if (this[index + i] != array[i]) {
                found = false;
            }
        }
        if (found) {
            return index;
        }
        prevIndex = index + 1
    }
    return index;
};
Run Code Online (Sandbox Code Playgroud)

后来我发现维基百科称之为Naïve字符串搜索 …

javascript algorithm search

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

在C中切割字符串的开头

void slice_first_char(char ** string)
{
    *string = &(*string[1]);
}

int main(int argc, char * argv[])
{
    char * input = "abc";
    input = &(input[1]);
    puts(input); // "bc" as expected.

    slice_first_char(&input);
    puts(input); // \372\277_\377
                 // What‘s going on?
}
Run Code Online (Sandbox Code Playgroud)

如何重写slice_first_char函数以使其按预期工作?

c pointers c-strings

0
推荐指数
1
解决办法
1880
查看次数