小编Hum*_*ood的帖子

IE中的自定义事件,不使用库

我的任务是在不使用任何库(如jQuery或原型)的情况下在文档上触发自定义事件.

所以我对Firefox这样做很好:

function fireCustomEvent(eventData)
{
    if (document.createEvent)   // Firefox
    {
        var event = document.createEvent('HTMLEvents');    // create event
        event.initEvent('myCustomEvent', true, true );     // name event
        event.data = eventData;                            // put my stuff on it
        document.dispatchEvent(event);                     // fire event
    }
    else if (document.createEventObject)    // IE
    {
        xxxxxxxxxxx
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我可以像这样开火:

fireCustomEvent({
    category: 'test',
    value: 123
});
Run Code Online (Sandbox Code Playgroud)

并像这样捕获它(这里我可以使用jQuery):

$(document).bind('myCustomEvent', function (event) {
    doStuff(event);
});
Run Code Online (Sandbox Code Playgroud)

我的问题是,我可以做些什么来使这项工作在IE上(换句话说,我把xxxxxxxxxxx放在哪里)?

我认为IE等效应该看起来像这样:

 var event = document.createEventObject();
 event.data = eventData;
 document.fireEvent('myCustomEvent', event);
Run Code Online (Sandbox Code Playgroud)

但这不起作用.IE让我只使用预定义的事件名称(onclick等),甚至其中一些不起作用(例如onmessage)

任何帮助或想法表示赞赏!

javascript events internet-explorer

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

Google App Engine正在发送带有错误mime类型的SVG

我正在使用带有Python 2.7的Google App Engine,我正在尝试将svg文件用作精灵表.

出于某种原因,这适用于Win7和Ubuntu,但不适用于Vista或Mac(在每种情况下使用最新的Chrome和Firefox).

这里用mime-type"application/octet-stream"发送,浏览器提示下载它,而不是显示它.

我尝试在我的app.yaml中覆盖mime-type,如下所示:

- url: /img/.*\.svg
  static_dir: public/img
  mime_type: image/svg+xml

- url: /img
  static_dir: public/img
Run Code Online (Sandbox Code Playgroud)

但这并没有改变任何事情.

我还试图通过他们自己的url路由svg文件的请求

- url: /img/svg
  static_dir: public/img
  mime_type: image/svg+xml

- url: /img
  static_dir: public/img
Run Code Online (Sandbox Code Playgroud)

但这导致文件与mime-type"img/png"一起发送,因此浏览器至少会尝试显示它,但不能.

只是为了确保,我按照说明尝试了每个组合,并且还使用了header-options:

- url: /img/svg
  static_dir: public/img
  http_headers:
    mime-type: image/svg+xml
Run Code Online (Sandbox Code Playgroud)

没有成功.

有什么帮助吗?

[编辑]

经过一些更多的测试后,似乎在Ubuntu上使用本地app-launcher,它会text/html在部署时使用svg发送它application/octet-stream,无论我在app.yaml中放置什么.

有没有人有这方面的经验?我能解决这个问题的唯一方法是直接将svg代码插入到页面中,这有点糟糕.这是一个图形,我想以这种方式对待它.

[更多编辑]

最后,我把它放在yaml文件中,它似乎工作:

- url: /img/.*\.svg
  static_dir: public/img
  http_headers:
    content_type: image/svg+xml

- url: /img
  static_dir: public/img
Run Code Online (Sandbox Code Playgroud)

google-app-engine svg mime-types

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

CSS - 许多小规则与少数大规则

假设我有许多按钮.每个按钮都有一个不同的图标,但都来自同一个精灵表.

现在我想知道的是,浏览器方面更有效率.通过多个小规则设置每个按钮,如下所示:

.icon {
    background-image: url('iconsheet.png');
}
.a-button {
    background-position: -x -y;
}
.b-button {
    background-position: -x -y;
}
.c-button { ...

<input class="icon a-button"> blabla ...
Run Code Online (Sandbox Code Playgroud)

或者这更好:

.a-button {
    background-image: url('iconsheet.png');
    background-position: -x -y;
}
.b-button {
    background-image: url('iconsheet.png');
    background-position: -x -y;
}
.c-button {
    background-image: url('iconsheet.png');
    background-position: -x -y;
}

<input class="a-button"> blabla ...
Run Code Online (Sandbox Code Playgroud)

请注意

  1. 代码是在程序上创建的,所以我只对解析,渲染等效果感兴趣,而不是最好的编码实践.
  2. 这只是一个玩具设置.实际上,在游戏中有更多不同属性的组合(边框,字体等).

只有少数臃肿的规则适用于每个标签会超过必须提供更大的CSS文件吗?

非常感谢!!

[编辑]:到目前为止,感谢您的所有答案!为了澄清,我正在使用SASS/SCSS.我正在使用的*.scss文件很好,可读性/可维护性.

我特别感兴趣的是,每个标签具有更少的单个规则是否有性能优势,这使得在最后拥有bazillion-line css文件是可以接受的.

html css

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

为什么使用 bin/www 而不是 index.js?

express-generator工具创建一个名为 的文件bin/www并将其用作应用程序的主要入口点。我相信我已经看到其他几个模块也这样做了,但绝大多数只是使用index.js.

这背后的理由是什么?当然,我理解为什么您要将服务器和用于设置程序的代码拆分为单独的模块,但为什么bin/www而不呢index.js?为什么将主入口点嵌套到比它调用的内容更深两层的程序中?删除文件扩展名,使其更加缺乏描述性?

这背后是否有一个聪明的、不明显的原因?我也应该将其用于我的节点模块吗?

谢谢你!

[编辑]:

所有好的答案,谢谢大家!我已经接受了这一观点,指出这是包含可执行文件的包的标准行为。这是我在这方面遇到的更多阅读:

javascript code-structure node.js express express-generator

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

如何从 GraphQL 模式创建验证规则

如何将一个简单的 GraphQL 模式(可以通过导入来访问服务器端并通过查询来访问客户端)转换为验证规则?

我可以看到如何对枚举执行此操作,假设我有一个标题:

  enum Title {
    Mr, Ms, Mrs, Dr
  }
Run Code Online (Sandbox Code Playgroud)

我可以通过查询访问可能的值

  __type (name: "Title") {
    name
    enumValues {
      name
    }
  }
Run Code Online (Sandbox Code Playgroud)

现在我可以在客户端上创建一个下拉列表或在服务器上创建一个验证,但是如何编码和访问例如字符串字段的最小/最大长度?或者数字的最小/最大值?

我需要为每个字段添加自定义类型吗?或者,还有更好的方法?


[编辑]回应丹尼尔的回答:

我使用 yup 进行验证,这是一个很棒的库,但例如,如果gql InputType需要某个字段,我如何将其放入 yup 架构中?

我如何在前端使用这个 yup 模式?理想情况下,我想将其序列化,将其发送给客户端,并在那里重建验证。

我能想到的唯一其他方法是共享代码,但是每次模式更改时我都需要重新构建和重新部署客户端,这当然是不可能的:/

validation graphql

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

python矩阵与numpy矩阵.我究竟做错了什么?

我正在用Python试验一些3d渲染.我一直在读Python,太慢了!我只是必须利用Numpy的C-awesomeness来完成我在着色器中无法做到的所有矩阵事物!否则什么都行不通,yadda,yadda(在这里解释......).

但是:我做了一些测试!

这是一个随机矩阵,曾经是Numpy-flavor:

matrix1 = numpy.matrix([[1, 1, 0, 0,], [0, 1, 0, 0], [0, 0, 1, 1], [0, 0, 0, 1]])
>>> matrix([[1, 1, 0, 0],
            [0, 1, 0, 0],
            [0, 0, 1, 1],
            [0, 0, 0, 1]])
Run Code Online (Sandbox Code Playgroud)

曾经作为沼泽标准元组:

matrix2 = (1, 1, 0, 0,\
      0, 1, 0, 0,\
      0, 0, 1, 1,\
      0, 0, 0, 1)
Run Code Online (Sandbox Code Playgroud)

现在,如果我想要反过来,我可以在Numpy中做到:

def inv_1():
    return matrix1.I
Run Code Online (Sandbox Code Playgroud)

或者作为纯Python(我省略了一些数学因为它伤害了我的脑袋):

def inv_2():
    m0, m1, m2, m3, \
    m4, m5, m6, m7, \
    m8, m9, m10, m11, \ …
Run Code Online (Sandbox Code Playgroud)

python numpy

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

如何在Tumblr的read api中查询多个标签?

我试图在网页上大致包含Tumblr提要,如下所示

    $.ajax({
        url: 'http://mypage.tumblr.com/api/read/json?tagged=interesting+tag',
        type: 'GET',
        dataType: 'jsonp',
        success: renderStuff,
        error: function () {
            alert('D\'oh'!)
        }
    });
Run Code Online (Sandbox Code Playgroud)

现在,这很好用:我得到所有带有"有趣标签"标签的条目.

我的问题是:我如何要求多个标签?像这样更改查询字符串

'http://mypage.tumblr.com/api/read/json?tagged=tag1&tagged=tag2&tagged=tag3'
Run Code Online (Sandbox Code Playgroud)

仅返回带有'tag3'的条目.

"AND"或"OR"标签名称是否存在一些技巧?如果没有,我很乐意只查询所有这些并手动过滤它们,但我认为值得一提.

在此先感谢人们!!

javascript ajax tumblr

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

Gravatar VS JQuery Ajax ......有帮助吗?

我想在我的页面上包含一个功能,用于检查用户是否在其电子邮件中有Gravatar帐户.如果是,他们应该显示该图片,如果没有,他们应该给予其他选择.

我正在尝试按如下方式执行此操作:

  $.ajax({
      url: 'https://secure.gravatar.com/' + md5(user.email) + '.json',
      method: 'GET',
      timeout: 4000,
      success: function successFn() {
          doGravatarStuff();
      },
      error: function errorFn(response, status, error) {
          console.log(response.status); //debug
      }
  });
Run Code Online (Sandbox Code Playgroud)

这总是在Internet Explorer上返回错误状态0,我似乎无法弄清楚原因.我尝试将'dataType'更改为'json','html'等,但这似乎没有帮助.

此外,也许这是一个相关的问题,如果我在FF或Crome上测试这个问题,并且用户确实没有帐户,则会根据"网络"标签读取返回404错误

404 Not Found 649ms
Run Code Online (Sandbox Code Playgroud)

但'response.status'似乎仍为0

任何人的想法?非常感谢提前!!

ajax jquery gravatar

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