跳到主要內容

發表文章

目前顯示的是 七月, 2015的文章

設定 Microsoft Edge 的預設檔案下載目錄

參考文章:How To Change Default Download Location In Microsoft Edge

欸,沒想到不是解Bug的時候也能發文譙Microsoft的瀏覽器
升Win10後可以看到 Win8不少愚蠢的設計被移除了,整體來說進步很多
但還是有新增一些愚蠢的地方,像是這個問題

當我進入Edge的進階設定後發現竟然沒有地方可以變更下載預設目錄
這個設定不出現在一般設定我覺得是很合理的作法
但是進階設定也沒有...WTF...不知道Edge預期的進階使用者是怎麼樣的程度

這個調整首先要打開Windows的Regedit
可以用快捷鍵 Win+R 或是直接用Win10的搜尋框,輸入Regedit後按Enter
啟用之後依著以下目錄搜尋就能找到Edge的登錄設定值
HKEY_CURRENT_USER\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.microsoftedge_8wekyb3d8bbwe\MicrosoftEdge\Main

在這個目錄下新增字串值
數值名稱打上  Default Download Directory
數值資料填入你想設定的預設檔案下載目錄

儲存完後再開啟Edge測試看看,這樣應該就行了

Java 8 JavaScript Engine 引入 Java Class 的方法變更

Java 8 使用了新的JavaScript Engine "Nashorn"
使用上的一些方式跟過去不太一樣
在跑程式碼時發現了過去版本用來引入 Java class 的importClass、importPackage會跳Exception
看了 Open JDK的回報 ScriptEngine throws exception when evaluating importClass and importPackage
Nashorn 採用了不一樣的方式引入 Java class,如果要維持相容性
可以在 JavaScript Engine 建立後執行這段程式碼
try { engine.eval("try {load('nashorn:mozilla_compat.js');} catch (e) {}"); } catch (ScriptException e) {}
因為用try catch包起來,所以如果Rhino讀到這段丟 Exception 會被包起來
這樣 Nashorn 也可以執行過去跑在 Java 上的有引入 Java class 的 JavaScript Code了

至於 Nashorn 的正式引入 Java class 用法看到這篇文章會是

var BigDecimal = Java.type('java.math.BigDecimal');

function calculate(amount, percentage) {
   var result = new BigDecimal(amount).multiply(
      new BigDecimal(percentage)).divide(
         new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_EVEN);
   return result.toPlainString();
}

型別會作為一個物件產生,這樣也比較符合 JavaScript 中的做法

IE IFRAME 不儲存Cookie

參考文章: Cookie blocked/not saved in IFRAME in Internet Explorer

之前沒特別注意過這問題
前一陣子才發現開放給外部嵌入網頁使用的IFRAME元件在 IE 上居然不會有Session存在
以往使用 IFRAME 都是在自家產品內嵌入,使用上都沒碰過問題
這次客戶回報 IE 11的測試有這問題後才發現當網頁網域跟IFRAME網域不同時
IE 會要求提供IFRAME頁面提供 P3P 標籤,否則就不能存Cookie
也因為這個原因,連帶地使得 Session 也不能用了

P3P的相關議題在參考文章的那篇 stackoverflow 討論的滿詳細的
這是一個宣告自己不會蒐集使用者資料或諸如此類的隱私權宣告標籤
參考了許多文章得到的結論是,這是一個逐漸死亡的標準,Chrome跟Firefox都已經放棄了
他的問題包含
1. 不確定有實質法律效力
2. 很難有網站可以完全做到不蒐集使用者資料
    再說就算網站說一套做一套,使用者也得有能力證明網站有蒐集資料

結論是碰到這個問題最簡單的作法是在response中加入P3P header
至於實質效力? 看到一個有點酸的評論 Problem solved, and IE is happy :)
連 IE 11也有是比較讓我意外,希望 M$ 新的Edge可以不要再做這種沒實質效益的行為了