Skip to content

Instantly share code, notes, and snippets.

@ambar
ambar / _.md
Created August 9, 2012 09:49
chrome formatblock bug

在 pre 标签或具有 pre-wrap 样式的容器中, para a 和 para b 之间有一个 TextNode 内容为 '\n' , 此时执行 document.execCommand('formatblock', false, 'blockquote') 然后 para b 被克隆了。

Chrome/21.0.1180.75 Safari/537.1

@ambar
ambar / _.html
Created August 15, 2012 13:40
Maxthon 3.42 line break bug
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
#editable {
padding: .5em;
min-height: 200px;
border: 1px dotted gray;
@ambar
ambar / chain.coffee
Created August 20, 2012 12:25
coffeescript chain
chain = (o, fn) -> () -> fn.call o
$body = $ document.body
do chain $body, ->
@css 'background','sienna'
@addClass 'sienna'
@ambar
ambar / hack.js
Created August 21, 2012 13:51
funny place caret hack in IE
// I 替换
var span = goog.dom.createDom('span',{ innerText: element.nodeValue })
element.parentNode.replaceChild(span, element)
// II 测量
var clientRect = getElementClientRect(span)
// II 还原
span.parentNode.replaceChild(element, span)
var pad = goog.userAgent.VERSION === '8.0' ? 2 : 0
var range = document.selection.createRange()
@ambar
ambar / _.html
Created September 14, 2012 08:27
jQuery 1.8 + data events intercept
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
button {
display: block;
margin: 5px;
}
@ambar
ambar / twitter-mod.css
Created September 15, 2012 11:18
css hidden text
a .ellipsis:after {
content: '...';
}
a .invisible {
font-size: 0;
line-height: 0;
}
@ambar
ambar / force-recalc-style.js
Created October 8, 2012 10:33
fix iOS6 orientation bug
var onOrientationChange, $html = $(document.documentElement)
if ('orientation' in window) {
onOrientationChange = function() {
var classes = {
'0': 'portrait',
'90': 'landscape landscape-left',
'-90': 'landscape landscape-right'
}
var values = function(o) {
return Object.keys(o).map(function (k) { return o[k] })
@ambar
ambar / font.css
Created October 8, 2012 10:44
fix win/chrome punctuation bug
@font-face {
font-family: 'Helvetica Neue';
unicode-range: U+FF0C, U+3001, U+3002; /* 仅转换顿号、逗号、句号 */
src: local(PMingLiU);
}
@font-face {
font-family: sans-serif;
unicode-range: U+FF0C, U+3001, U+3002;
src: local(PMingLiU);
@ambar
ambar / csv2vcard.js
Created October 13, 2012 07:13
csv2vcard.js
/**
* @author ambar
* @ref http://en.wikipedia.org/wiki/VCard
*/
function parse(csv, sep) {
sep = sep || ','
var lines = csv.split('\n'), head = lines.shift().split(sep)
var json = lines.map(function(line) {
var person = {}, values = line.split(sep)
@ambar
ambar / -.md
Created October 26, 2012 16:06
delegate proto
  • 核心是 matchSelector 方法,可以借用了 jQuery.fn.is 方法;
  • 选择器匹配了多个元素时,事件触发顺序应该从底向上;
  • 绑定多个监听函数时并多时匹配到多个元素时,依次发生顺序要正确;
  • 匹配目标应该包含 event.target,不包含委托的顶层元素;
  • 反注册时,清理代理函数;
JSON.stringify(delegateMap, function(k, v) {
 return typeof v === 'function' ? 'fn' : v
}, ' ')