FF8 and before
keydown
compositionstart
ㄓ
text
ㄓㄨ
text
ㄓㄨㄥ
text
中
text
text
input
compositionend
keyup
FF9 and FF10
keydown
compositionstart
compositionupdate
ㄓ
text
compositionupdate
ㄓㄨ
text
compositionupdate
ㄓㄨㄥ
text
compositionupdate
中
text
text
input
compositionend
keyup
FF11
keydown
compositionstart
compositionupdate
text
ㄓ
compositionupdate
text
ㄓㄨ
compositionupdate
text
ㄓㄨㄥ
compositionupdate
text
中
text
compositionend
input
keyup
FF12
keydown
compositionstart
compositionupdate
text
ㄓ
input
compositionupdate
text
ㄓㄨ
input
compositionupdate
text
ㄓㄨㄥ
input
compositionupdate
text
中
input
text
compositionend
input
keyup
附帶一提以"a" 為例輸入英文字的情況是:
keydown
keypress
a
input
keyup
也就是說,
FF9 新增compositionupdate 事件,其他事件沒有變化;
FF11的text事件移到文字輸入之前而且input 事件移到compositionend之後,
我們沒用到text事件,
input 事件沒有和compositionend直接相關所以順序沒影響;
不過FF12又在文字輸入之後觸發input 事件,
這就造成目前版本無法使用輸入法輸入文字。
在FF8 之前input 事件只會在輸入英文以及輸入法完成輸入文字時觸發,
所以之前就在這個事件觸發時將輸入區文字送出去並清空輸入區。
不過FF12每按一個鍵就會觸發input 事件,
所以第一個鍵會送出第一個注音符號並清空輸入區,
在輸入未完成時清空輸入區會讓輸入法無法工作所以接下來的按鍵都沒有反應。
之前我在做GC移植的時候,
我把compositionstart起到compositionend之間的input 事件都跳掉不處理,
這個做法在FF12可以正常工作,
不過在FF10及先前版本input 事件是在compositionend之前,
所以輸入區文字不會送出也不會清空。
我在pref_test 這個branch內的修改部分如下:
--- termview.js
+++ termview.new.js
@@ -38,6 +38,7 @@
var composition_start ={
view: this,
handleEvent: function(e) {
+ this.view.isComposition = true; // Fix for FX 12+
this.view.onCompositionStart(e);
}
};
@@ -47,6 +48,13 @@
view: this,
handleEvent: function(e) {
this.view.onCompositionEnd(e);
+ delete this.view.isComposition; // Fix for FX 12+
+
+ // For compatibility of FX 11 and before
+ if(e.target.value) {
+ this.view.onTextInput(e.target.value);
+ e.target.value='';
+ }
}
};
this.input.addEventListener('compositionend', composition_end,
false);
@@ -62,6 +70,8 @@
var text_input={
view: this,
handleEvent: function(e) {
+ if(this.view.isComposition) // Fix for FX 12+
+ return;
if(e.target.value) {
this.view.onTextInput(e.target.value);
}
我的做法是跳掉composition之間的input 事件,
並且在compositionend事件觸發時送出輸入區文字並清空,
這種做法接近FireBBS.l-hedgehog對輸入法的處理。
英文字和原來一樣使用input 事件處理,
輸入法就和FireBBS.l-hedgehog一樣使用compositionend,
這樣就能兼容所有FF版本。
不過這種做法和先前相比複雜了一點而且也不知道我沒測試過的輸入法能不能用,
不知道各位有沒有更好的方法?
我想我們應該在FF12正式版出來以前釋出相容的版本,
我等一下會先把v0.2.5以後輸入法以外的錯誤修正部分先整合到trunk ,
我想我們也可以討論看看新版還要放什麼東西。
因為這邊的處理可能會花一些時間,
再加上AMO 版本更新可能要一個多星期,
遇到問題的使用者可以先下載上面連結的檔案。
因為這次的版本更新主要都是錯誤修正並沒有太大的變動,
我想應該不會出現太嚴重的錯誤。
這次更新的詳細修正項目如下:
r117 Show favicon in search menu
r121 Add ")" to link detection rule
r123 Fix some warnings from AMO
r124 Fix selTrim bug
r125 Fix a minor bug of selectAll
r126 Fix scrolling bug
r131 Disable copy in Firefox menu when nothing is selected
r133 Fix a bug of receiving tab char
r142 reconnection is limited to 100 times
r143 delay for reconnection is implemented (no delay by default)
r144 Fix IME bugs in FX 12+
如果想要保留onkeyPress原來架構的話,
我也許可以重寫出一個在FX和GC都可以正常執行的版本,
這樣控制字元的輸入也就沒那麼必要一起封裝起來了。
另外我目前輸入法的實作並沒有特別去偵測FX版本,
不管在新版還是舊版的FX裡面都是:
input 事件處理英文、
compositionend處理中文。
只是FX11以後版本的compositionend之後會立刻觸發input 事件,
所以compositionend那邊的註解只是標記我們將來停止支援10esr 之後
該段程式碼就可以移除了。
至於跨瀏覽器的部分,
因為GC的事件是非同步的,
compositionend後面的input 不會等前面的執行結束才執行,
所以這兩個函式都會送出輸入的字串,
造成我們所輸入的文字會出現兩次。
這部分我還沒找出方法解決,
可能還是要獨立封裝起來然後在內部偵測瀏覽器。
On 4月26日, 上午12時09分, PCMan <pcman...@gmail.com> wrote:
> 感謝你的貢獻!!
> 剛剛在看你的 code,
> 我有個想法:
> 要不要把整個輸入法處理,封裝成一個 InputHandler 物件?
> 把這些髒髒的 hack 封裝起來,維持 termview.js 的乾淨,
> 這對於維持 termview.js 可讀性,以及之後要移植到其他瀏覽器,應該會有幫助。
> 對應不同版本的Fx可有不同內部實作,但是InputHandler物件對外的介面保持一致。
>
> 2012/4/25 u881831 <u881...@hotmail.com>
>
>
>
>
>
>
>
> > FX12正式版發布了,
> > 所以現在已經有一些災情傳出來了。
> > 我已經將我之前的patch 整合到trunk 並且把版本號更新,
> > 接下來建立Tag 並且上傳打包好的檔案到這邊的Downloads 還有AMO 就完成了。
> > 不過因為最近的更新只有我一個人在弄,
> > 我也沒有收到任何錯誤回報或是意見回饋,
> > 我想就這樣發布正式版應該很危險。
> > pcman 或是其他committer 如果有時間的話可以幫忙測試一下這個版本嗎?
> > 也歡迎其他有意願的使用者幫忙測試。
> > 這是我包好的檔案:
>
> >https://docs.google.com/open?id=0B-K9h3GKW2VGNDZkZjNkMmYtMWYyMC00NmQ5...
On 5月4日, 下午9時37分, WM <wander...@gmail.com> wrote:
> 我在Linux上測過了,沒有問題。
>
> 拜託快送去審核吧,PTT瀏覽器板一直有人問Orz
>
> 另外可以請問一下Chrome那邊的進度如何了?有辦法用Native Client API 來做了嗎?
>
Chrome版的部分目前還在內部測試的階段,
最主要的問題是設定flash 連線模組的部分,
目前的模組無法分辨連線失敗是沒有網路、網址打錯還是沒有設定安全性設定所造成的,
所以除非使用者有相當程度的網路相關知識可以自行除錯,
目前這個套件對大部分使用者來說還是不大好用,
我對flash 這部分不熟接下來也沒時間處理所以短時間內應該不會有改善,
我想這個問題解決之後再加上一些介面文字的潤飾應該就能出正式版了。
至於Native Client 的外掛程式也是在GC的沙盒中執行,
所以跟javascript程式碼一樣無法建立任意的socket,
也就是說無法連線到一般的BBS 站。
PTT 上有人提到的Secure Shell使用了GC的私有API ,
這個API 限定只有這個套件才能使用,(鎖套件ID)
雖然說他們有給開發人員測試用的ID,
不過我想我們不應該直接使用這個ID發佈正式版。
這邊是那個套件的常見問題
http://goo.gl/3LROU
以及開發人員指南(和原始碼的連結)
http://goo.gl/UoE2e
將來的GC新增了可以使用上述API 的白名單,
http://code.google.com/p/chromium/issues/detail?id=111314
至於這個功能會不會也只是內部使用就不知道了。
如果可以像flash 一樣由使用者新增白名單項目,
就有轉換成Native Client 的價值了。
Native Client 外掛程式為了提升效能在不同的CPU 架構下不能重複使用,
不過只要編譯x86 和x86_64兩個版本應該就能在所有主流的桌上型作業系統上使用,
而且包含我在內應該有不少人C++ 比Flash 熟的,
如果有人現在想要試試看的話我也不反對。
nsIUTF8ConverterService.convertStringToUTF8
的參數由三個變成四個:
http://mxr.mozilla.org/mozilla-central/source/intl/uconv/idl/nsIUTF8ConverterService.idl
相關討論串:
https://bugzilla.mozilla.org/show_bug.cgi?id=663057
該次修改的diff:
http://hg.mozilla.org/mozilla-central/rev/3e58342de10e
要修正的話很容易就是在所有用到convertStringToUTF8 的地方再加一個參數,
對14以前的舊版本而言應該沒有副作用,
至於那個新增參數aAllowSubstitution 的值對我們來說應該沒有太大的影響。
只不過我並不確定FX15到正式版為止還會不會改,
有沒有必要現在就修正?
還是不管它我們這邊直接出新版,
等FX15正式版出了再說?
不知道各位有什麼想法?
> 這邊是那個套件的常見問題http://goo.gl/3LROU
On 5月25日, 下午9時26分, SUN Chun-Yen <scy.h...@gmail.com> wrote:
> 謝謝你。我個人認為先推出目前的版本以配合 12-14,15到時再說。
>
> 2012/5/25 u881831 <u881...@hotmail.com>:
>
>
>
>
>
>
>
>
>
> > 現在輸入法那邊的程式碼已經重整完畢,
> > 應該要要發布新版了。
> > 不過....
> > 這個星期mozilla 改了一個API ,
> > 所以在FX 15a1 nightly 裡顯示模組掛了。
>
> > nsIUTF8ConverterService.convertStringToUTF8
> > 的參數由三個變成四個:
> >http://mxr.mozilla.org/mozilla-central/source/intl/uconv/idl/nsIUTF8C...
另外我之前修正選取區域的時候沒有處理好,
當選取區域的結尾在最後一個column的時候,
選取區域的結尾會設成錯誤的值。
因為像是純文字複製等功能有包含自動修正的機制,
所以我沒有發現這個問題。
但是pref_test 的複製ANSI彩色功能沒有做自動修正所以就出錯了,
GC版也有一樣的問題。
我已經將修正過後的程式碼上傳到trunk 和所有的branches了,
我想trunk 部分的修正應該不會對trunk 現有的功能造成影響。
造成各位的困擾實在是很抱歉
基本上這個套件不能直接在bootstrap 模式使用的有:
overlay
resourceURI
components
其中overlay 的部分似乎要改用document.loadOverlay(),
但是unload很麻煩:
https://bugzilla.mozilla.org/show_bug.cgi?id=607384
不過我們似乎只有在FX 3.6用到這部分,
而bootstrap 要在FX4+以上才能用,
所以這部分先不管。
至於第二部分可以藉由註冊自己的resource protocol解決,
第三部分可以把component 包成module後載入,
下面是我試出來的.xpi:(convertStringToUTF8 尚未修正)
https://docs.google.com/open?id=0B-K9h3GKW2VGM0ZGYnNXbGQ5dmc
事實上我做的事就只有在這兩個檔案各加一行
install.rdf:
<em:bootstrap>true</em:bootstrap>
components/TelnetProtocol.js:
var EXPORTED_SYMBOLS = ['Protocol'];
以及從這個套件複製出bootstrap 設定檔
https://addons.mozilla.org/en-US/firefox/addon/pdfjs/
然後修改套件名稱檔案路徑而已,
不知道會不會有版權問題所以暫時沒有上傳到repository,
如果大家覺得還好那我就先上傳以後再改。
(抱歉最近沒有太多時間處理程式碼)
因為只有在FX10(包含 ESR)以及更新版本才會自動讀取
bootstrap 套件的 chrome.manifest並自動忽略不支援的指令,
所以FX 4 ~ FX 9 都不能使用,
但是FX 3.6不認得bootstrap 所以完全不受影響。
如果要支援FX 4 ~ FX 9 這些版本可能要寫不少程式碼,
不知道有沒有辦法只讓FX 4 ~ FX 9 需要重新啟動?
還是要直接捨棄FX 9以前版本的相容性?
因為我對bootstrap 並不是很熟,
這也只是初步試出來的結果不知道會不會造成其他問題,
不知道大家有什麼意見?
另外也希望大家幫忙測試看看有沒有什麼問題。
我想主要的問題是:
以後的overlay 需要手動一個一個移除新增的Node, js, css 等;
捨棄FX 4 ~ FX 9 的相容性,FX 3.6還相容但是可能也要捨棄,
這樣錯誤主控台出現的警告都可以修掉。
目前的pref_test 還沒拿掉FX 3.6的相容性,
所以FX 4 ~ FX 9 可以安裝但是完全不能用,
不知道使用FX 4 ~ FX 9 的人多不多說不定可以完全不管。
其他的應該都不會太麻煩,
而且即使不改成不須重新啟動,
我想也應該要在結束時清理物件,
除了可以降低發生錯誤或是和其他套件相衝的機率,
也可以減少記憶體洩漏的情況,
雖然之前有試著處理這部分,
不過也沒有辦法保證都有處理到。
版權的部分我想這樣應該就沒有問題了,
我還加上了版本升級時的處理:
GC會在套件升級時關掉所有套件開啟的分頁;
FX則是什麼都不做繼續用舊版套件運行。
一般而言應該要做成像GC一樣清除所有套件造成的影響,
這樣比較不會出問題也比較方便後續的開發,
不過我這邊是做成升級時重載分頁然後使用新套件重新連線,
移除時清空分頁但不關閉,
以後重裝套件後可以用上一頁回復分頁,
我想這樣應該有比較好的使用者體驗。
如果之後發現這樣會出問題再照正規寫法關閉所有分頁。
附帶一提保護分頁的部分也許會在這邊出問題,
因為我對這邊不熟所以沒有處理,
如果這部分確定進trunk 的話,
希望有人可以幫忙處理這部分。
不知道各位有沒有什麼想法,
希望可以提出來討論。
On 6月18日, 下午10時08分, u881831 <u881...@hotmail.com> wrote:
> 因為FX15進aurora channel後convertStringToUTF8 依然沒有變更,
> 也許我們應該先規劃新版本會比較好,
> 我想新版本要是只有這個修正的話有點少,
> 所以我想讓這個套件安裝時不須重新啟動就能執行。(bootstrap)
>
> 基本上這個套件不能直接在bootstrap 模式使用的有:
> overlay
> resourceURI
> components
>
> 其中overlay 的部分似乎要改用document.loadOverlay(),
> 但是unload很麻煩:https://bugzilla.mozilla.org/show_bug.cgi?id=607384
> 不過我們似乎只有在FX 3.6用到這部分,
> 而bootstrap 要在FX4+以上才能用,
> 所以這部分先不管。
>
> 至於第二部分可以藉由註冊自己的resource protocol解決,
> 第三部分可以把component 包成module後載入,
> 下面是我試出來的.xpi:(convertStringToUTF8 尚未修正)https://docs.google.com/open?id=0B-K9h3GKW2VGM0ZGYnNXbGQ5dmc
>
> 事實上我做的事就只有在這兩個檔案各加一行
>
> install.rdf:
> <em:bootstrap>true</em:bootstrap>
>
> components/TelnetProtocol.js:
> var EXPORTED_SYMBOLS = ['Protocol'];
>
> 以及從這個套件複製出bootstrap 設定檔https://addons.mozilla.org/en-US/firefox/addon/pdfjs/
> ...
>
> 閱讀更多 >>
2012/8/4 u881831 <u88...@hotmail.com>:
google還附有一個 telnet 的範例!!!
https://github.com/GoogleChrome/chrome-app-samples/tree/master/telnet
這個應該就是解決之道了!
看起來 Chrome 未來將會提供內建的 raw TCP socket 給 extension 用 :-)
2012/9/28 u881831 <u88...@hotmail.com>:
我也覺得很有可能,都已經給這麼多範例了,還有人開始在利用這個做 extension
但是他的使用方法和 Fx 的差異不小,可能我們需要包裝一下
弄一個我們自己的 socket class,把 Fx 和 GC 的差異封裝起來
> 不過我想還是等這個API 進stable channel後再來實作會比較好。(似乎是GC23)
>
> 目前使用Flash 實作的功能除了socket外還有編碼轉換,
> 雖然編碼轉換的功能應該可以直接用內建的PPAPI flash ,
> 不過flash 內似乎也沒有直接的轉換API ,
> 轉換的功能也是用數個API 組合出來,
> 再加上flash 和javascript之間的資料傳遞,
> 所以目前的編碼轉換很慢。
你要轉換什麼編碼?如果是 big5 to Unicode, 我記得我們有寫過啊?
那個 unicode 補完支援,不就有對照表可以查?
Firefox 裡面用 js 實做不會很慢喔,GC 應該只會更快
需要的話我可以來做這塊。
還是你講的是不一樣的東西?
> 我這邊有想到用HTML本身的API 組合出編碼轉換的方法,
> 不過速度上可能不會比現在快。
> 不知道大家有沒有更好的方法?
> 還是沿用現有的flash API ?
>
> 除了上面這些,目前還有一些待改善的問題,
> 在支援GC本身書籤後我之前做的下拉選單就沒有存在必要了;
> registerProtocolHandler 沒有進展而omnibox keyword 有很多問題,
> 弄成APP 然後在web 頁面用html元件拼出自己的網址列,
> 也許會有比較好的使用者體驗?
這也是一個選項,先求功能正確,再求完美整合啊
> 右鍵選單似乎只能控制個別套件的子選單,
> 而且那個API 的目的似乎是要服務所有HTML頁面,
> 就我們的需求而言,
> 似乎禁用原有選單然後用HTML元件拼出右鍵選單才是比較正確的做法?
同意,而且我們應該不太需要原本右鍵選單裡面的功能。
> 還有一些比較不重要的問題:
> 右鍵搜尋的部分我還找不到API 來實作;
> 訊息通知音目前使用tts 實作,但是Linux 下沒有tts 可以用,
> 其他類似軟體都是用在extension內放mp3 等檔案,
> 也許我們可以把開放版權的聲音檔案包進這個套件?
這是很合理的作法,聲音檔案去 pidgin / libpurple 裡面抓現成的就好了,
很容易解決
> 自動登入的帳號密碼目前也還沒找到比較安全的儲存方法。
個人覺得不需要,在畫面上寫清楚是明碼儲存就好了。
telnet 本來就是毫無安全性的東西,密碼輸入也是以明碼送出到網路,
有心人要竊取非常容易。
再者,如果有人可以進你的電腦,開啟你的設定檔來看密碼,
那他還有什麼其他不能做的事?甚至可以裝 key snooper,
看 BBS 密碼算小事了。
2012/10/2 u881831 <u88...@hotmail.com>:
> socket API看起來應該可以替代現有的flash 連線,
> 雖然標experimental的API 依然需要使用者作一些設定才能用,
> 不過跟現在的flash 相比還是好很多,
> 而且這個API 將來也有可能去掉experimental標籤。我也覺得很有可能,都已經給這麼多範例了,還有人開始在利用這個做 extension
但是他的使用方法和 Fx 的差異不小,可能我們需要包裝一下
弄一個我們自己的 socket class,把 Fx 和 GC 的差異封裝起來> 不過我想還是等這個API 進stable channel後再來實作會比較好。(似乎是GC23)
>
> 目前使用Flash 實作的功能除了socket外還有編碼轉換,
> 雖然編碼轉換的功能應該可以直接用內建的PPAPI flash ,
> 不過flash 內似乎也沒有直接的轉換API ,
> 轉換的功能也是用數個API 組合出來,
> 再加上flash 和javascript之間的資料傳遞,
> 所以目前的編碼轉換很慢。你要轉換什麼編碼?如果是 big5 to Unicode, 我記得我們有寫過啊?
那個 unicode 補完支援,不就有對照表可以查?
Firefox 裡面用 js 實做不會很慢喔,GC 應該只會更快
需要的話我可以來做這塊。
還是你講的是不一樣的東西?
PCMan於 2012年10月3日星期三UTC+8上午11時58分46秒寫道:2012/10/2 u881831 <u88...@hotmail.com>:
> socket API看起來應該可以替代現有的flash 連線,
> 雖然標experimental的API 依然需要使用者作一些設定才能用,
> 不過跟現在的flash 相比還是好很多,
> 而且這個API 將來也有可能去掉experimental標籤。我也覺得很有可能,都已經給這麼多範例了,還有人開始在利用這個做 extension
但是他的使用方法和 Fx 的差異不小,可能我們需要包裝一下
弄一個我們自己的 socket class,把 Fx 和 GC 的差異封裝起來> 不過我想還是等這個API 進stable channel後再來實作會比較好。(似乎是GC23)
對,但至少未來當 flash 完全不能用的時候,socket API 應該已經成熟
> 另外這個文件似乎還沒跟上程式碼的變化:
> https://developer.chrome.com/apps/app_network.html#connecting
> 這邊有該文件Reviewer的意見:
> https://chromiumcodereview.appspot.com/10908045
>
> 也就是說UDP 範例程式碼所使用的onEvent 似乎已經被棄用,
> https://chromiumcodereview.appspot.com/10273016
> 目前看到的範例套件都沒有使用這個功能,
> 所以我們可能需要想一想FX內監聽socket事件的函式要怎麼移植。
>
> 我直接執行範例套件得到一些初步的結論:
>
> onStartRequest
> 應該可以直接由連線的callback函式確認result >= 0 後直接呼叫。
>
> onDataAvailable
> 只能用setInterval 或是其他方法不斷的呼叫read,
> 當有資料時再呼叫這個函式。
> 這部分對程式效能有非常重大的影響,
> 間隔太長的話反應很慢,
> 太短的話主程式呼叫函式次數太多可能會拖慢速度,
> 可能要仔細想一想要怎麼做。
這個不會很困難,當 socket.connect() 之後,在 connect Callback 裡面,
呼叫 readNext(); // 在下面定義
function readNext() {
socket.recv(id, 4096, readCallback);
}
然後定義
function readCallback(readInfo) {
if(readInfo.resultCode > 0) {
onDataAvailable(readInfo.data);
setTimeout(0, "readNext()"); // 利用 setTimeout 0 秒
}
}
這樣就可以了,不需要 setInterval()。
每次讀取完一次資料,就再讀下一次,直到 resultCode = -15,就斷線。
如此可以簡單模擬出原來的架構,而且效能搞不好不差?
可以試試看
我終於找到一個有趣的方法可以繞過 GC 的限制
透過 Chrome messaging APIs
這裡有範例
https://github.com/GoogleChrome/chrome-app-samples/tree/master/messaging
extension 和 packaged apps 之間可以互相呼叫
所以我可以把主程式放在 extension 內,
並且建立一個 helper app 專責處理 TCP connection
當 extension 開了新分頁,要建立連線時,
傳送一個訊息到 packaged app,由 app 進行 socket 操作,
然後把結果以 response 回傳給 extension
就可以完全繞過 GC 的限制,而且只用純 javascript
我有實際試過,這個方法是可以從 extension call app 內的 socket API
pcman 套件內呼叫 chrome.socket.* 的地方很少,
只要稍做封裝,把這幾個 calls 改成 messages 轉發到另一個 helper app
再從 helper app 內代為呼叫 chrome.socket 並且傳回結果給 extension
就可以實現了。而且剛好因為 socket API 都是 async 的方式,
和 messaging API 完全一樣,所以實現起來非常簡單。
基本上,只會用到 extension to app 單向的簡單訊息傳輸
如果有必要,甚至 helper app 也可以反向傳訊息呼叫 extension
例如要求 extension 開啟 new tab
唯一的缺點是,helper app 需要使用者手動執行,
因為新版 GC 已經取消 packaged app 的 background_page 了,
看起來必須手動啟動才行,好像不能從 extension 內呼叫起動?
any ideas?
今年開始Google開始剔除NPAPI 的外掛程式了,我這邊按照先前PCMan 的想法先弄一個packaged app處理socket,加上自動啟動和隱藏UI後使用者體驗的部分算是可以接受了。
只是像這樣在GC的安全性機制打洞,不只是上傳google play 可能會被刪除,將來版本的GC會不會對這個動作設限也不知道。
我想這個版本應該能撐個一兩年吧。
除了從svn 下載外,封裝好的主程式可以從這邊下載:處理socket的app 除了從svn 下載外,還可以從這邊下載:https://drive.google.com/file/d/0B-K9h3GKW2VGb3dUdjlvRXBvcjQ這個app 有白名單的設計,白名單預設是空的所有套件都不能使用。套件和app 都裝好之後,第一次使用前請手動啟動app ,出現設定視窗後請手動填入主程式的套件ID。主程式的套件ID可以在GC的擴充功能設定頁找到。技術上將填入套件ID的動作寫死在程式碼裡面是很容易,不過目前這個套件還是處於開發中的狀態,所以在安全性的考量下,我就設計成必須手動填入名單,這樣的話其他開發者應該可以直接把這個app 套用在他們修改過的程式,另外像是ssh 等不同功用的套件應該也能直接用這個app 進行開發。
2014/1/12 u881831 <u88...@hotmail.com>今年開始Google開始剔除NPAPI 的外掛程式了,我這邊按照先前PCMan 的想法先弄一個packaged app處理socket,加上自動啟動和隱藏UI後使用者體驗的部分算是可以接受了。你太厲害了,我之前試驗一下弄不出來就沒弄了居然真的被你做出來了!!!剛試用過,相當棒!太厲害了!BTW, 那個 about 頁面改一下吧,其實現在大部份都是你做的了把你自己的名字放前面吧,我的丟下面就好 :)只是像這樣在GC的安全性機制打洞,不只是上傳google play 可能會被刪除,將來版本的GC會不會對這個動作設限也不知道。我之前有私下 mail chrome developers 問相關問題沒有獲得這方面的保證。google play 的條款並沒有禁止這種應用套件之間互相溝通,也是chrome 允許的合法機制,而非用 plugin 繞過我倒是覺得可以上架看看,如果真的不允許,再來看怎麼弄上架費用我可以負責出我想這個版本應該能撐個一兩年吧。如果撐不住,我還有想好三個備案1. 開發 pepper API 為底的 plugin,專門提供 TCP socket 連線功能給 javascript。plugin 只做 socket 操作,這樣開發應該不難。2. 用 node.js 寫一個小 proxy server,讓使用者另外下載安裝,跑在 localhost。於是,chrome 套件是連 http://localhost/,然後由 server 轉用 raw socket 連外,兩者之間訊息用 json 互傳即可,都 js 寫起來應該很簡單。缺點是,server 接收到BBS站更新畫面,好像沒有好方法可以主動通知我們的 client? 如果用 websocket 而不是 http,這問題就沒了,但 node.js 弄 websocket 似乎比較麻煩?3. 徵求善心人士提供一台 proxy server 讓我們連 http 轉 socket (例如某些學術網路)
除了從svn 下載外,封裝好的主程式可以從這邊下載:處理socket的app 除了從svn 下載外,還可以從這邊下載:https://drive.google.com/file/d/0B-K9h3GKW2VGb3dUdjlvRXBvcjQ這個app 有白名單的設計,白名單預設是空的所有套件都不能使用。套件和app 都裝好之後,第一次使用前請手動啟動app ,出現設定視窗後請手動填入主程式的套件ID。主程式的套件ID可以在GC的擴充功能設定頁找到。技術上將填入套件ID的動作寫死在程式碼裡面是很容易,不過目前這個套件還是處於開發中的狀態,所以在安全性的考量下,我就設計成必須手動填入名單,這樣的話其他開發者應該可以直接把這個app 套用在他們修改過的程式,另外像是ssh 等不同功用的套件應該也能直接用這個app 進行開發。之後如果要上架,還是直接寫死比較安全,以免被濫用。這樣似乎比較不會有安全上的疑慮
...
--
---
這是 Google 網上論壇針對「pcmanfx」群組發送的訂閱通知郵件。
如要取消訂閱這個群組並停止接收來自這個群組的郵件,請傳送電子郵件到 pcmanfx+u...@googlegroups.com。
如需更多選項,請前往:https://groups.google.com/d/optout。