2018年7月10日 星期二

jquery引用網址

jquery官方提供的網址

<script src='//code.jquery.com/jquery-2.1.4.min.js'></script>


google提供的網址

<script src='//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js'></script>

注意:
Google CDN網址雖然是比較好的選擇,但為了避免被大陸地區google的服務會有異常,建議使用jquery官方提供的引用網址
後方的數字可更改以符合最新版次,jquery版本資訊可見這裡



2018年7月7日 星期六

Android studio使用emulate Android模擬器時出現device still connecting bug臭蟲的修正方式

狀況:
在終端機使用$ cordova emulate android指令時,無法正常開啟並執行Android studio的模擬器

錯誤碼:

(node:1225) UnhandledPromiseRejectionWarning: CordovaError: Failed to execute shell command "getprop,dev.bootcomplete"" on device: Error: adb: Command failed with exit code 1 Error output:
error: device still connecting

修正方式:
Step1.
開啟電腦資料夾至APP專案內下面這個位置的emulator.js檔案
yourAppName/platforms/android/cordova/lib/emulator.js

Step2.
以編碼軟體開啟emulator.js檔案,並且找到下面語法
if ((error && error.message &&
    (error.message.indexOf('not found') > -1)) ||
    (error.message.indexOf('device offline') > -1))

Step3.
把上面這段語法改為如下:(紅色字標註是新增的部分)
if ((error && error.message &&
    (error.message.indexOf('not found') > -1)) ||
    (error.message.indexOf('device offline') > -1) ||
    (error.message.indexOf('device still connecting') > -1))

Step4.
修改完並且儲存後,再次於終端機執行模擬指令
$ cordova emulate android
即可順利開啟模擬器

Reference:
  1. https://stackoverflow.com/questions/50935337/failed-to-execute-shell-command-getprop-dev-bootcomplete-on-device-error-for
  2. https://issues.apache.org/jira/browse/CB-14165
  3. https://github.com/apache/cordova-android/pull/457/files


2018年6月28日 星期四

讓瀏覽器或手機版瀏覽器強制更新(force reload)網頁的css,以讀取最新的css樣式修改

常常在線上維護網頁時發現css樣式表裡面已經做了修改
但是從瀏覽器看,還是讀到舊的。

電腦上的瀏覽器(如chrome)還能以開發者模式來強制網頁更新讀取新檔,
但是在手機版的瀏覽器就只能刪除cookie重來,不但操作步驟多麻煩,
而且也無法每次更新後都提醒網頁的瀏覽者去清cookie。
讓網頁瀏覽者可能無法即時看到網頁的樣式更新

只要在style連結的css檔案路徑後方加上變數即可使瀏覽器強制更新
以下紀錄兩個根據不同狀況可以使用的簡單方法

1.在css連結的後方加上任意的變數(v是變數名可任意取,後面2.0是隨意的數字)
如:<link  rel="stylesheet" type="text/css" href="./css/style.css?v=2.0">

2.在css連結後方加上時間參數(適合以php檔案做開發時測試用)。
上面第一種方式,如果在開發時,每做一次樣式修改就要改一下變數的數字太過費工。
如果是以php寫網頁,那麼可以在css連結後方帶一個time()取得現在的時間。

如:<link  rel="stylesheet" type="text/css" href="./css/style.css?v=<?=time();?>">

因為每一次修改或重整網頁都會有時間差,所以經由time()函式取得當下操作的時間,
那麼v變數就會不斷改變。

第二種方式適合開發時測試使用,完成上線後還是以第一種方式為主,這樣瀏覽者才不用每次重新整理網頁都要讀一次css檔