小编Chr*_*phe的帖子

缩小对象属性的解决方案?

在我的JavaScript应用程序中,我仅将几个对象用于内部目的(用户不需要访问它们).例如:

var images={
    blank:"blank.gif",
    plus:"plus.gif",
    minus:"minus.gif"
}
Run Code Online (Sandbox Code Playgroud)

当我使用像Uglify.js这样的缩小器时,属性名称(空白,加号,减号)保持不变.有没有办法缩小它们?

到目前为止我所考虑的事情:

  • 在高级模式下使用Google Closure minifier,但这会破坏我的代码
  • 用变量替换对象属性(例如var imagesBlank ="blank.gif")但它使代码的可读性降低

有没有更好的办法?

javascript object minify

13
推荐指数
3
解决办法
3333
查看次数

Pie,bar,line:SVG/VML优于Canvas

我需要为"标准"图表选择一个库:馅饼,线条和条形图.

从我所读到的,在我看来,最好的格式是SVG/VML,例如Highcharts.现在,IE 9已经成为所有主流浏览器的标准配置.重新缩放和导出似乎比Canvas更容易.

不过,我看到几个图表库依赖于Canvas.我错过了什么吗?是否有任何理由考虑使用Canvas over SVG进行此类应用?

javascript charts svg canvas pie-chart

11
推荐指数
2
解决办法
1622
查看次数

从文本中提取JSON

AJAX调用返回包含JSON字符串的响应文本.我需要:

  1. 提取JSON字符串
  2. 修改它
  3. 然后重新插入它以更新原始字符串

我并不太担心第2步和第3步,但我无法弄清楚如何执行第1步.我正在考虑使用正则表达式,但我不知道我的JSON如何与嵌套对象具有多个级别或数组.

javascript regex json

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

underscore.js的替代方案

我正在寻找一个操纵对象数组的JavaScript库,主要用于过滤,排序和分组/计数.

似乎underscore.js适合该法案,但我有兴趣探索其他选择.Underscore有60多种功能,而我只需要少量功能.

例如,我希望一些数据库可以包含这些功能,但我不知道在哪里查看.

javascript datatable json underscore.js

10
推荐指数
5
解决办法
7765
查看次数

正则表达式匹配括号

对于模板引擎,我使用正则表达式来标识字符串中括号内的内容.例如,正则表达式需要匹配{key}或<tag>或[element].

目前我的正则表达式如下所示:

var rx=/([\[\{<])([\s\S]+?)([\]\}>])]/;
Run Code Online (Sandbox Code Playgroud)

问题是这样的正则表达式不会强制括号匹配.例如,在以下字符串中:

[{lastName},{firstName}]
Run Code Online (Sandbox Code Playgroud)

正则表达式将匹配 [{lastName}

有没有办法定义匹配括号?例如,如果开口括号是[那么结束括号必须是],而不是}或a>

javascript regex

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

找到当前脚本的推荐方法?

我正在编写一个脚本,需要将DOM元素添加到页面,脚本所在的位置(类似于小部件的方法).做这个的最好方式是什么?

以下是我正在考虑的技术:

  1. 在脚本正上方包含一个id ="Locator"的元素.问题:
    • 我不喜欢额外的标记
    • 如果我在页面中重用小部件,则几个元素将具有相同的"定位符"ID.我在考虑在脚本中添加一行来删除曾经使用过的id,但仍然......
  2. 在脚本中添加id.问题:
    • 即使它似乎工作,id属性对脚本元素无效
    • 与上面相同的问题,如果我在页面中重用脚本,则几个元素将具有相同的id.
  3. 使用getElementsByTagName("script")并选择最后一个元素.到目前为止,这对我有用,它看起来有点沉重,我不确定它是否可靠(考虑延迟脚本)
  4. document.write:不优雅,但似乎做了这个工作.

  5. [编辑]根据idealmachine的回复,我正在考虑另外一个选择:

    • 在脚本标记中包含一个属性,例如goal ="tabify".
    • 使用getElementsByTagName("script")获取所有脚本.
    • 循环遍历脚本并检查goal ="tabify"属性以查找我的脚本.
    • 如果页面中有另一个小部件,请删除目标属性.
  6. [编辑]另一个想法,也受到迄今为止的回复的启发:

    • 使用getElementsByTagName("script")获取所有脚本.
    • 循环遍历脚本并检查innerHTML以查找我的脚本.
    • 在脚本结束时,如果页面中有另一个窗口小部件,请删除脚本标记.

javascript dom document.write getelementsbytagname

9
推荐指数
3
解决办法
6914
查看次数

jQuery相当于querySelector

什么是jQuery等价的querySelector?到目前为止我找到的唯一方法是选择所有然后选择第一个选择:

$(selectorString)[0]
Run Code Online (Sandbox Code Playgroud)

有了上面的表达式,jQuery是否足够智能,在找到第一个匹配后停止?

更新:@Mutnowski建议使用eq()和第一个,但在阅读jQuery文档后,这两个方法似乎有相同的缺点:jQuery将首先获得所有匹配,然后只过滤掉第一个元素.

javascript jquery jquery-selectors selectors-api

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

一个minifier可以这样做吗?(....这是一个好主意吗?)

我有一个JavaScript应用程序,可以生成大量的DOM元素.这意味着我经常document.createElement("tagname")在我的脚本中使用.

我正在考虑使用这个简单的功能:

function c(e) {return document.createElement(e);}
Run Code Online (Sandbox Code Playgroud)

我会继续用JavaScript(或者可能是CoffeScript)编写我的代码,并在代码中使用完整的document.createElement方法以提高可读性.但我希望当我"编译"或缩小代码时,document.createElement的所有实例都将被替换为该c函数.

我会对其他方法做同样的事情:document.getElementById等.我希望用这种技术可以将代码缩短10到20%.

是否有可以做到这一点的缩小器或编译器?它首先是否有意义?

javascript minify

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

对角列标题

我在html表中有长文本的列标题,我想以45度角显示标题(类似于Excel中可以完成的标题).

有没有标准的,跨浏览器的方式来使用CSS或JavaScript执行此操作?

我开始玩css3please.com,但旋转似乎不起作用,至少在IE 7中.另外,另一个问题是CSS围绕元素的中心旋转,而我需要围绕左侧旋转.

任何指针将不胜感激!

javascript css html-table rotation

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

样式innerHTML

我试图理解样式标签与innerHTML一起使用时的行为.

我做了3个实验:

使用现有规则的样式,innerHTML会插入其他选择器规则

结果:两条规则都适用.演示:http://jsfiddle.net/Tcy3B/

使用现有规则的样式,innerHTML插入相同的选择器规则

结果:忽略新规则.演示:http://jsfiddle.net/Tcy3B/1/

空样式,innerHTML插入规则,然后另一个innerHTML插入另一个规则

结果:第二条规则覆盖第一条规则.演示:http://jsfiddle.net/Tcy3B/2/

任何人都可以解释这个逻辑吗?这对我来说完全是随机的,有时第二条规则被添加到第一条规则中,有时会被忽略,有时它会覆盖第一条规则.

背景:我们的想法是构建依赖于css而不是JavaScript的动态UI,如此全文搜索示例所示.

举个例子,这是第二个演示的代码:

HTML:

<style type="text/css">
  .red {color:red;}
</style>
<div class="red">red</div>
<div class="blue">blue</div>
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

var st=document.getElementsByTagName("style")[0];
st.innerHTML=".red {color:blue;}";
Run Code Online (Sandbox Code Playgroud)

javascript css styles innerhtml

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