發表文章

目前顯示的是 12月, 2017的文章

運用資料層 dataLayer.push 建立 GTM 自訂事件

圖片
GTM(Google Tag Manager;網頁代碼管理工具)最大的好處在於讓頁面較整潔、許多系統已經寫好的事件與變數可以直接拿來用,非常方便。但現實往往沒那麼簡單,通常都會遇到一堆 ajax、history 或 cache 要處理,這時候就要請到自訂事件出馬了。 若只用 GA,沒有使用 GTM 的話,自訂事件要這樣寫: gtag('event', ..., { 'event_category' : ..., 'event_label' : ... }); 那如果用 GTM 的話該如何操作呢? 將資料 push 進 dataLayer 首先我們要知道什麼是 dataLayer:一個 GTM 內部的全域變數,它能動態存取網頁的使用者行為數據。 更進一步探索它的   JSON   架構,可以在網頁上使用開發者工具(F12)的 console 欄,輸入 dataLayer,其實跟它的名字一樣就是層層分明的資料層 (Data Layer)。 在 F12 中查看 dataLayer 你會發現 GTM 測試欄位左邊有幾個事件,dataLayer 裡面就有幾個 object。 再把 object 點開(這裡以 Window Loaded 為例),會有 event 和 GTM 給的事件 id,而這個事件(gtm_load)其實就是「觸發條件」裡的「視窗已載入」。 因此,我們可以依樣畫葫蘆用 dataLayer.push 自己寫一段觸發條件把資料送進 dataLayer ,就可以在 GTM 裡面操作了: 開始設定自訂事件 先宣告 dataLayer,避免發生 undefined error 再設定你要 push 進去的數據 這裡我們用「 nav a 點擊偵測」和 ajax 事件舉例(jQuery): var dataLayer = window.dataLayer || []; // example 1: detect nav a tag click $('nav a').click(function(){ var $text = $(this).text(); dataLayer.push({ 'event'

SEO 優化? 先談談其中的 SEF

圖片
什麼是 SEF ? SEF ( Search Engine Friendly ) 搜尋引擎友善,也有人稱之為 Technical SEO(技術 SEO)。簡單來說就是讓拜訪網站的機器人比較容易作業的技能,在 SEO 裡面只能算是冰山一角。 工程師在工作上常常被主管要求改善網站的 SEO ,卻不能改變其中的文字與圖片,這算哪門子的 SEO,頂多只能算 SEF。SEO 是較為全面的行銷,可以延伸到 PPC 、整體文案內容、社群經營、線下活動、UI排版、UX...都會對 SEO 造成影響。 對於說自己拚命改善 SEO 實際上只有做 SEF 的人,我真的不知道要怎麼溝通,因為 SEO 主要還是靠內容與其權威性。 扯遠了,還是回來看 SEF 吧。 HTML Meta tag title:網頁名稱。就如它的名稱,是這個網頁頁面的標題,也是在搜尋結果中呈現的名稱。 description:網頁描述,雖然在SEF中的比重極小,但還要要填。  property="og:xxx":Facebook 中呈現的樣貌。在台灣 FB 就是最大的社群網站,你不得不服。當然還有像是 twitter 之類的社群網站也有它們專用的 tag。詳見: The Open Graph protocol  和 twitter cards 。 以 SEF 的角度來說,title 和 description 這兩個是必要的,當然還有像是 charset、http-equiv、viewport 這些必要的東西,不過這三個會影響 RWD 的東西有誰不知道要加嗎? 你說 robots 跟 keywords 呢?基本上 robots 只有在你要下 nofollow 或 noindex  的時候才會用到;keywords ....都 2017 年了,別再考慮這個東西。 HTML Link tag canonical:指向的網頁,跟網頁權重有關。比方說,一個頁面有上百筆資料,你想一次呈現 10 筆,然後靠網址的變動程現不同筆的資料,這些網頁就需要加上這個避免流量分散。 另一個情況是「桌機、行動裝置」網頁,因為這兩頁內容相同,也必需加上這個 tag 指向其中一個主要的網頁,要不然會打架互相搶流量與重覆內容被 google 打槍,其中之一在

CSS 文字底線效果

用 box-shadow 實現 .text{ text-decoration: none; box-shadow:0 -1px 0 #2858aa inset; transition:box-shadow .2s ease-in-out; } .text:hover{ box-shadow:0 -1px 0 rgba(0,0,0,0) inset, 0 3px 0 #2858aa; transition:box-shadow .2s ease-in-out; } 結果如下 HOVER ME 用 psudo element 和 scaleX 實現 .text { text-decoration: none; position: relative; } .text::before{ content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 2px; background-color: #6ac7ef; transform-origin: bottom right; transform: scaleX(0); transition: transform .3s ease; } .text:hover::before{ transform-origin: bottom left; transform: scaleX(1); } 效果如下 HOVER ME

HTML table export to CSV

常常遇到上司想在網頁上方便觀看一些搜集而來的數據,之後又說想要把網頁上的表格匯出成 csv 檔案,方便他們用 excel 計算一些東西。這時候該怎麼辦才好? 以下為使用 jQuery 的解決方案 function exportTableToCSV($table, filename) { var $rows = $table.find('tr:has(td)'), // Temporary delimiter characters unlikely to be typed by keyboard // This is to avoid accidentally splitting the actual contents tmpColDelim = String.fromCharCode(11), // vertical tab character tmpRowDelim = String.fromCharCode(0), // null character // actual delimiter characters for CSV format colDelim = '","', rowDelim = '"\r\n"', // Grab text from table into CSV formatted string csv = '"' + $rows.map(function(i, row) { var $row = $(row), $cols = $row.find('td'); return $cols.map(function(j, col) { var $col = $(col), text = $col.text(); if(/^(0)([0-9]){9}/.test(text)){ return '=""'+text