目前在 TelnetProtocol.js 裡面 newURI 是用 nsSimpleURI 而非如 FireBBS 的
nsStandardURL
參考資料:https://developer.mozilla.org/en/URIs_and_URLs
我嘗試模仿 FireBBS 的自動登入功能,發現 nsSimpleURI 是沒有 host 值的,
導致 Fx 原生的 記住密碼、造訪次數 這些功能都不適用。
所以 uri.spec 雖可存取 spec,但 uri.host 這個 getter 在原始碼裡面就直接報錯:
278 行 http://mxr.mozilla.org/mozilla-central/source/netwerk/base/src/nsSimpleURI.cpp
此限制可能導致以後很多 Fx 的功能我們不能用(可能含 Mozilla Weave 等)
解決方式:
改用同 FireBBS 的 nsStandardURL
但是會造成網址列出現 telnet://ptt.cc/ 這樣的東西(尾巴多個斜線)
這不知道正確與否,不正確的話,暫時沒找到修改方式。
如果真的不得已要換,結尾多出 / 我個人是還可以接受
2009/11/29 bootleq <boo...@gmail.com>:
2009/11/29 bootleq <boo...@gmail.com>:
> 不行耶,嘗試存取 host 就丟 exception 了。
>
> 2009/11/29 PCMan <pcma...@gmail.com>
我認為會出現trailing slash可能是Fx內部對於URI規範做的一種因應。
我也花了很多時間讀文件,避免了一些可能發生的URI狀況,以下的URI都應該要被轉成正確的telnet://ptt.cc/
telnet:ptt.cc
telnet:/ptt.cc
telnet:///ptt.cc
telnet://ybite:pc...@ptt.cc
telnet://ptt.cc/Gossiping
telnet://ybite:pc...@ptt.cc/Gossiping
目前沒發現side-effect,而且解決了host為空的問題
On 11月29日, 上午11時44分, PCMan <pcman...@gmail.com> wrote:
> 那就用 Standard URI 吧,不過得確定不會有什麼副作用才行...
>
> 2009/11/29 bootleq <boot...@gmail.com>:
>
> > 不行耶,嘗試存取 host 就丟 exception 了。
>
> > 2009/11/29 PCMan <pcman...@gmail.com>
>
> >> 這個 nsURI 是我們自己在 protocol handler 裡面生成的
> >> 有沒有可能我們自己 parse,然後幫 uri 物件設定 host 屬性?
> >> newURI: function(spec, charset, baseURI)
> >> {
> >> var uri =
> >> Components.classes[kSIMPLEURI_CONTRACTID].createInstance(nsIURI);
> >> uri.spec = spec;
> >> uri.host = 我們自己幫它設定 host;
> >> return uri;
> >> },
> >> 這樣能動嗎?
>
> >> 如果真的不得已要換,結尾多出 / 我個人是還可以接受
>
> >> 2009/11/29 bootleq <boot...@gmail.com>:
> >> > 這個跟 自動登入、網站資訊(會出現在頁面資訊 - 安全資訊等地方)等有關。
>
> >> > 目前在 TelnetProtocol.js 裡面 newURI 是用 nsSimpleURI 而非如 FireBBS 的
> >> > nsStandardURL
> >> > 參考資料:https://developer.mozilla.org/en/URIs_and_URLs
>
> >> > 我嘗試模仿 FireBBS 的自動登入功能,發現 nsSimpleURI 是沒有 host 值的,
> >> > 導致 Fx 原生的 記住密碼、造訪次數 這些功能都不適用。
>
> >> > 所以 uri.spec 雖可存取 spec,但 uri.host 這個 getter 在原始碼裡面就直接報錯:
> >> > 278 行
> >> >http://mxr.mozilla.org/mozilla-central/source/netwerk/base/src/nsSimp...
看來所有 URL 都會被檢查然後加個 /
我是有點困惑,因為 URI scheme 似乎不見得有 slash:
http://en.wikipedia.org/wiki/URI_scheme#Official_IANA-registered_schemes
至於 telnet 的 scheme 如下:
telnet://<user>:<password>@<host>:<port>/
且「The final "/" character may be omitted」(參考 http://tools.ietf.org/html/rfc4248)
所以我想 r27 應該無問題吧......
新版可以就這樣做,等找到辦法再來把 / 去掉。
On 11月30日, 上午4時23分, Littlebtc <sst.dre...@gmail.com> wrote:
> r27試著放上去了http://code.google.com/p/pcmanfx/source/detail?r=27
browser.js 有個 gURLBar.value 即網址列文字,
但這個值會在 數個時機 被 URLBarSetURI 方法修改。
目前應該沒有好方法去掉 slash。
On 11月30日, 上午11時39分, bootleq <boot...@gmail.com> wrote:
> 發現 trailing slash 相關 Bug 214405:https://bugzilla.mozilla.org/show_bug.cgi?id=214405
>
> 看來所有 URL 都會被檢查然後加個 /
> 我是有點困惑,因為 URI scheme 似乎不見得有 slash:http://en.wikipedia.org/wiki/URI_scheme#Official_IANA-registered_schemes
>
> 至於 telnet 的 scheme 如下:
> telnet://<user>:<password>@<host>:<port>/
> 且「The final "/" character may be omitted」(參考http://tools.ietf.org/html/rfc4248)