在Stackers的推荐下,我一直在阅读Crockford的优秀Javascript:The Good Parts.
这是一本很棒的书,但由于其中很多都致力于描述使用Javascript基本功能的最佳方式,我不确定如何在不重复许多其他Javascript程序员的努力的情况下将他的建议付诸实践.
以这段话为例,例如:
创建新对象时,可以选择应该是其原型的对象.Javascript提供的机制是混乱和复杂的,但它可以大大简化.我们将
create为该Object函数添加一个方法.该create方法创建一个使用旧对象作为其原型的新对象.Run Code Online (Sandbox Code Playgroud)if (typeof Object.create !== 'function') { Object.create = function(o) { var F = function () {}; F.prototype = o; return new F(); }
我可以手动将此代码添加到我的所有Javascript项目中,但跟踪所有内容将是一个巨大的痛苦.
是否有任何库实现了Good Part的建议,从而省去了必须跟踪它们(/物理地将它们全部输出)的麻烦?
我的在线商店中的每个订单都有一个面向用户的订单号.我想知道生成它们的最佳方法.标准包括:
现在我正在使用以下方法(没有校验和):
def generate_number
possible_values = 'abfhijlqrstuxy'.upcase.split('') | '123456789'.split('')
record = true
while record
random = Array.new(5){possible_values[rand(possible_values.size)]}.join
record = Order.find(:first, :conditions => ["number = ?", random])
end
self.number = random
end
Run Code Online (Sandbox Code Playgroud) 所以我使用这个user_sessions/new视图使Authlogic正常工作:
<% form_for @user_session, :url => user_session_path do |f| %>
<% if @user_session.errors.present? %>
Invalid username or password
<% end %>
<%= f.label :login %><br />
<%= f.text_field :login %><br />
<br />
<%= f.label :password %><br />
<%= f.password_field :password %><br />
<br />
<%= f.check_box :remember_me, :style => 'margin-right: 10px' %>
<%= f.label :remember_me %><br />
<br />
<%= f.submit "Login" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
但是当我改变的时候
<%= f.label :login %><br />
<%= f.text_field :login %><br /> …Run Code Online (Sandbox Code Playgroud) 所以我使用的任何自定义数据属性都应以"data-"开头:
<li class="user" data-name="John Resig" data-city="Boston"
data-lang="js" data-food="Bacon">
<b>John says:</b> <span>Hello, how are you?</span>
</li>
Run Code Online (Sandbox Code Playgroud)
如果我忽略这一点,会发生什么不好的事吗?即:
<li class="user" name="John Resig" city="Boston"
lang="js" food="Bacon">
<b>John says:</b> <span>Hello, how are you?</span>
</li>
Run Code Online (Sandbox Code Playgroud)
我想一个坏处是我的自定义属性可能与具有特殊含义的HTML属性冲突(例如name),但除此之外,仅仅编写"example_text"而不是"data-example_text"会有问题吗?(它不会验证,但是谁在乎呢?)
我可以对用户输入的文本使用ActionView :: Helpers :: SanitizeHelper #sanitize吗?我计划向其他用户显示这些文本?例如,它会妥善处理本网站上描述的所有案例吗?
此外,文档提到:
请注意,对用户提供的文本进行清理并不能保证生成的标记有效(符合文档类型)或格式正确.输出可能仍包含未转义的'<','>','&'字符和混淆浏览器.
处理这个问题的最佳方法是什么?Hpricot在显示之前通过已消毒的文本?
当您在Google Instant Previews中查看我网站上的某个页面时,您会看到一条AJAX错误消息(由某些AJAX引起,该文件已准备就绪):

我认为解决这个问题的方法是让我的javascript与Google的"浏览器"使用的任何javascript引擎兼容(就像人们可能为IE6设计的那样).
那么:Google Instant Previews能理解哪些JavaScript?
从功能上讲,两者看起来都像基于某些参数生成HTML的子例程.
决定在特定环境中使用其中一种纯粹美学吗?
我正在使用rails,但是在使用jQuery时不显眼地执行我的所有Javascript application.js.
不幸的是,这使得引用URL非常困难.例如,如果我想提供字段自动完成行为,我必须硬编码自动完成URL,application.js因为rails url_for不可用.
是否有可能application.js使用erb?我是否以错误的方式思考这个问题?
我正在收集所有用户的电子邮件地址,如下所示:
def self.all_email_addresses
output = ''
User.all.each{|u| output += u.email + ", " }
output
end
Run Code Online (Sandbox Code Playgroud)
但是,我最终在电子邮件地址字符串上添加了一个",".
我怎样才能摆脱这个/有更好的方法来获得逗号分隔的电子邮件地址列表?
如果我session[:greeting] = "Hi!"在一个控制器动作中执行,我可以session[:greeting]在其他控制器动作中引用多长时间?
在用户关闭浏览器之前?
直到一定时间过去?
另外,如何配置此值?
ruby ×3
javascript ×2
abstraction ×1
attributes ×1
authlogic ×1
checksum ×1
e-commerce ×1
html5 ×1
jquery ×1
sanitize ×1
session ×1
xss ×1