/
index.html
400 lines (248 loc) · 13.4 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
<!DOCTYPE html>
<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
<head>
<meta charset="utf-8">
<title>[jQ-Plugin] 有效降低會員註冊退信率的mailcheck - apa</title>
<meta name="author" content="阿帕">
<meta name="description" content="免費檔案分享Kicksend有寫一篇文章是關於如何降低退信率,內容大概是講User註冊會員以後,會發送註冊的確認信,但常常會發生被退信的情況,導致會員收不到信可能必須重新申請一次帳號,不然就是請客服修改E-mail,所以Kicksend為了減少這個困擾就做了分析並且解決問題 …">
<!-- http://t.co/dKP3o1e -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="canonical" href="http://rx836.github.com/blog/mailcheck-jquery-plugin">
<link href="/favicon.png" rel="icon">
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<script src="/javascripts/modernizr-2.0.js"></script>
<script src="/javascripts/ender.js"></script>
<script src="/javascripts/octopress.js" type="text/javascript"></script>
<link href="/atom.xml" rel="alternate" title="apa" type="application/atom+xml">
<!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
<link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
<link href="http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
<meta property="fb:admins" content="100000102681259"/>
<meta property="fb:app_id" content="416172151763823" />
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-31245620-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body >
<header role="banner"><hgroup>
<h1><a href="/">apa</a></h1>
<h2>Stay Hungry, Stay Foolish</h2>
</hgroup>
</header>
<nav role="navigation"><ul class="subscription" data-subscription="rss">
<li><a href="/atom.xml" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
</ul>
<form action="http://google.com/search" method="get">
<fieldset role="search">
<input type="hidden" name="q" value="site:rx836.github.com" />
<input class="search" type="text" name="q" results="0" placeholder="Search"/>
</fieldset>
</form>
<ul class="main-navigation">
<li><a href="/">Blog</a></li>
<li><a href="/blog/archives">Archives</a></li>
<li><a href="/about">About</a></li>
</ul>
</nav>
<div id="main">
<div id="content">
<div>
<article class="hentry" role="article">
<header>
<h1 class="entry-title">[jQ-Plugin] 有效降低會員註冊退信率的mailcheck</h1>
<p class="meta">
<time datetime="2012-11-28T12:04:00+08:00" pubdate data-updated="true">Nov 28<span>th</span>, 2012</time>
| <a href="#disqus_thread">Comments</a>
</p>
</header>
<div class="entry-content"><p><img src="https://lh5.googleusercontent.com/-dLci9WLFC-8/ULWyqQJ-OxI/AAAAAAAAB_U/odHWaG3jNfE/s482/w.jpg" /></p>
<p>免費檔案分享<a href="http://kicksend.com/" target="_blank">Kicksend</a>有寫一篇文章是關於<a href="http://blog.kicksend.com/how-we-decreased-sign-up-confirmation-email-bounces-by-50/" target=_blank"">如何降低退信率</a>,內容大概是講User註冊會員以後,會發送註冊的確認信,但常常會發生被退信的情況,導致會員收不到信可能必須重新申請一次帳號,不然就是請客服修改E-mail,所以Kicksend為了減少這個困擾就做了分析並且解決問題</p>
<!--more-->
<p>Kicksend發現有很多人被退信的原因都是在輸入電子郵件(E-mail)的時候打錯domain,例如“hotmail.con”、“gnail.com”、“yajoo.com”等,這種錯誤有時候用戶自己都不知道,就直接按送出,導致收不到註冊信,所以Kicksend就做了一個設計,在用戶輸入E-mail以後,會檢查E-mail的domain,如果發現疑似錯誤情形,就會跳出建議的選項問用戶要不要更改,做到良好的 <strong>user experience</strong>,用了這個方法以後也確實降低了50%的退信率,無形中也增加了不少用戶,而下面將介紹這套jQuery plugin - <strong>mailcheck</strong></p>
<p>首先,可以去github載回原始碼</p>
<p><a href="https://github.com/Kicksend/mailcheck" target="_blank">mailcheck</a></p>
<p>接著在網頁裡面載入jQuery和mailcheck.min</p>
<pre><code><script src="jquery.min.js"></script>
<script src="mailcheck.min.js"></script>
</code></pre>
<p>html部分,一個text field</p>
<pre><code><input id="email" name="email" type="text" />
</code></pre>
<p>接著是js部份</p>
<pre><code>var domains = ['hotmail.com', 'gmail.com', 'aol.com'];
var topLevelDomains = ["com", "net", "org"];
var superStringDistance = function(string1, string2) {
// a string distance algorithm of your choosing
}
$('#email').on('blur', function() {
$(this).mailcheck({
domains: domains, // optional
topLevelDomains: topLevelDomains, // optional
distanceFunction: superStringDistance, // optional
suggested: function(element, suggestion) {
// callback code
},
empty: function(element) {
// callback code
}
});
});
</code></pre>
<p>「domains」、「topLevelDomains」、「distanceFunction」這三個參數都是選填,分別為</p>
<p><strong>domains</strong>: 要比對的domain,例如:yahoo.com、google.com</p>
<p><strong>topLevelDomains</strong>: 允許的topLevelDomain,例如:com、net</p>
<p><strong>distanceFunction</strong>: 自訂用來計算最接近topLevelDomain內容的函式</p>
<p>假設在沒有填寫 <strong>domains</strong> 和 <strong>topLevelDomains</strong> 情況下,會採用預設值,根據source code裡面所寫的預設值為</p>
<p>預設domains</p>
<pre><code>defaultDomains: ["yahoo.com", "google.com", "hotmail.com", "gmail.com", "me.com", "aol.com", "mac.com",
"live.com", "comcast.net", "googlemail.com", "msn.com", "hotmail.co.uk", "yahoo.co.uk",
"facebook.com", "verizon.net", "sbcglobal.net", "att.net", "gmx.com", "mail.com"]
</code></pre>
<p>預設topLevelDomains</p>
<pre><code>defaultTopLevelDomains: ["co.uk", "com", "net", "org", "info", "edu", "gov", "mil"]
</code></pre>
<p>而「suggested」和「empty」則分別是 <strong>輸入錯誤時的callback</strong> 和 <strong>沒填寫E-mail的callback</strong>,所以你可以自行在這裡加上程式碼提醒User輸入錯誤或忘記輸入</p>
<h3>沒有jQuery的情況下</h3>
<p>假如你的專案裡面沒有用到jQuery,也可以單純使用js版本</p>
<pre><code>Kicksend.mailcheck.run({
email: yourTextInput.value,
domains: domains, // optional
topLevelDomains: topLevelDomains, // optional
distanceFunction: superStringDistance, // optional
suggested: function(suggestion) {
// callback code
},
empty: function() {
// callback code
}
});
</code></pre>
<p>最後附上有用到mailcheck這項效果的網站</p>
<ul>
<li><a href="http://kicksend.com/" target="_blank">Kicksend</a></li>
<li><a href="http://dropbox.com/" target="_blank">Dropbox</a></li>
<li><a href="http://flotype.com/" target="_blank">Flotype</a></li>
<li><a href="http://kickstarter.com/" target="_blank">Kickstarter</a></li>
<li><a href="http://kippt.com/" target="_blank">Kippt</a></li>
<li><a href="http://minecraft.net/" target="_blank">Minecraft</a></li>
<li><a href="http://prispy.com/" target="_blank">Prispy</a></li>
<li><a href="http://sbnation.com/" target="_blank">SB Nation</a></li>
<li><a href="http://show-space.com/" target="_blank">Show Space</a></li>
<li><a href="http://theverge.com/" target="_blank">The Verge</a></li>
<li><a href="http://uber.com/" target="_blank">Uber</a></li>
</ul>
<p>參考資料:</p>
<p><a href="https://github.com/Kicksend/mailcheck" target="_blank">mailcheck Github</a></p>
<p><a href="http://kicksend.com/join" target="_blank">Demo</a></p>
<p><a href="http://blog.kicksend.com/how-we-decreased-sign-up-confirmation-email-bounces-by-50/" target="_blank">How we decreased sign up confirmation email bounces by 50%</a></p>
<p>內容如有錯誤,歡迎指正</p>
</div>
<div>如果你覺得這篇文章有幫助,請幫我讚聲一下:)</div>
<div class="sharing">
<div class="fb-like" data-send="true" data-width="450" data-show-faces="false"></div>
</div>
<footer>
<p class="meta">
<span class="byline author vcard">Posted by <span class="fn">阿帕</span></span>
<time datetime="2012-11-28T12:04:00+08:00" pubdate data-updated="true">Nov 28<span>th</span>, 2012</time>
<span class="categories">
<a class='category' href='/blog/categories/jq-plugin/'>jQ-Plugin</a>
</span>
</p>
<p class="meta">
<a class="basic-alignment left" href="/blog/friendly-tooltip-responsive/" title="Previous Post: [jQuery] 自製擁有Responsive的Tooltip">« [jQuery] 自製擁有Responsive的Tooltip</a>
</p>
</footer>
</article>
<section>
<h1>FB Comments</h1>
<div id="facebook_comments" aria-live="polite">
<noscript>Please enable JavaScript to view the comments powered by facebook</noscript>
<div class="fb-comments"
data-href="http://rx836.github.com/blog/mailcheck-jquery-plugin/"
data-num-posts="5"
data-width="570">
</div>
</div>
</section>
<section>
<h1>Comments</h1>
<div id="disqus_thread" aria-live="polite"><noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
</div>
</section>
</div>
<aside class="sidebar">
<section>
<h1>Categories</h1>
<ul id="category-list"><li><a href='/blog/categories/css'>CSS (9)</a></li><li><a href='/blog/categories/facebook'>Facebook (5)</a></li><li><a href='/blog/categories/html5'>HTML5 (1)</a></li><li><a href='/blog/categories/javascript'>JavaScript (6)</a></li><li><a href='/blog/categories/jq-plugin'>jQ-Plugin (8)</a></li><li><a href='/blog/categories/jquery'>jQuery (17)</a></li><li><a href='/blog/categories/octopress'>Octopress (3)</a></li><li><a href='/blog/categories/phonegap'>PhoneGap (3)</a></li><li><a href='/blog/categories/win8'>Win8 (4)</a></li><li><a href='/blog/categories/好書分享'>好書分享 (5)</a></li><li><a href='/blog/categories/學習筆記'>學習筆記 (8)</a></li></ul>
</section>
<section>
<h1>Recent Posts</h1>
<ul id="recent_posts">
<li class="post">
<a href="/blog/mailcheck-jquery-plugin/">[jQ-Plugin] 有效降低會員註冊退信率的mailcheck</a>
</li>
<li class="post">
<a href="/blog/friendly-tooltip-responsive/">[jQuery] 自製擁有Responsive的Tooltip</a>
</li>
<li class="post">
<a href="/blog/css3-real-beauty-box-shadows/">[CSS] CSS3 box-shadow-用一個div畫出IPHONE 4</a>
</li>
<li class="post">
<a href="/blog/javascript-namespace/">[JavaScript] 簡單看命名空間(Namespace)與jQuery原始碼</a>
</li>
<li class="post">
<a href="/blog/jquery-accordion-plugin-kwicks/">[jQ-Plugin] Accordion Menu(手風琴)-Kwicks</a>
</li>
</ul>
</section>
</aside>
</div>
</div>
<footer role="contentinfo"><p>
Copyright © 2012 - 阿帕 -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
</footer>
<script type="text/javascript">
var disqus_shortname = 'rx836';
// var disqus_developer = 1;
var disqus_identifier = 'http://rx836.github.com/blog/mailcheck-jquery-plugin/';
var disqus_url = 'http://rx836.github.com/blog/mailcheck-jquery-plugin/';
var disqus_script = 'embed.js';
(function () {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/' + disqus_script;
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
}());
</script>
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/all.js#appId=416172151763823&xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<script type="text/javascript">
(function(){
var twitterWidgets = document.createElement('script');
twitterWidgets.type = 'text/javascript';
twitterWidgets.async = true;
twitterWidgets.src = 'http://platform.twitter.com/widgets.js';
document.getElementsByTagName('head')[0].appendChild(twitterWidgets);
})();
</script>
</body>
</html>