無料ブログ「rentafree.net」の管理人ブログ

Wikiの構文処理を修正

Wikiの構文処理を少し修正しました。

Wikiの構文で2重ブロックを作成する際、
例えば、
]深度1枠付き<div>
]]深度2枠付き<div>
こんな感じで出来ますが、
外枠側に何も入れずに、
]
]]深度2枠付き<div>
こんな感じにすると外枠にに<br>が入っちゃいますのでできませんでした。
]\
]]深度2枠付き<div>
こんな感じで改行をエスケープした場合<br>は挿入されませんが、
これだと内側の深度2ブロックが適用されませんでした。

というわけで、
行末 \ で改行をエスケープした場合、
改行コードをそのまま出力して<br>を回避しますが、
改行自体は有効で次の行の行頭構文は有効にしました。

新しい仕様では、
]\
]]深度2枠付き<div>
とすれば2重枠線が出せます。

もしかしたらこの変更で問題が生じるかもしれません。
問題が生じるようになっていたら報告お願いします。

アクセス解析(設置型)の仕様を変更しました

アクセス解析(設置型)の仕様を変更しました。
設置用タグに変更があり、旧設置タグでは解析できなくなりました。
お手数ですが、ご利用中の方は設置タグの変更おを願いします。

ブログ等の標準機能のアクセス解析ではなく、
<script>設置のアクセス解析の仕様変更です。


[変更理由]
旧仕様では設置タグにid属性をつけてidにより設置タグを取得していましたが、
idではなくsrcを見て取得するようにしました。
id属性はページ上で重複不可ですが、問題がなくなりました。

また、アクセス解析のIDをinnerHTMLで取得していましたが、
data-id属性(独自属性)で取得するようにしました。
今までの仕様でも問題はなかったと思いますが、
<script>のinnerHTMLというのはHTMLの仕様上利用していいのか怪しいので、
今後問題が生じる可能性があると判断しての変更です。


また、今までは<script>非対応のブラウザも<img>により解析していましたが、
必要ないと思うので<script>非対応ブラウザは対象外としました。


ブログエディターの<table>セル設定の修正

ブログエディターの<table>セル設定をした場合、
セルは<td>と<th>がある関係で新しく要素作り直してたんですが、
その際にrowspan又はcolspanが設定されているセルだった場合に属性が消えちゃってたので修正しました。

元の仕様だとrowspan、colspanに限らず、未定義属性は全部消えちゃってたので、
全属性コピーする感じに修正です。
rowspan、colspan以外の未定義属性も対応です。


修正はFirefox用の新エディターだけです。
Firefox以外も早く<menu>対応して欲しいもんだが、
ChromeとOperaは次期バージョン試しても非対応なんで、まだまだ実装されなそう・・・


一部ページでデザイン変えてみた

公式サイトの一部ページでデザイン変えて見ました。

トップページとか要ログインの編集ページではメニューでサイドバー出しますが、
メニューなしのページでも広告用に主に右にサイドバー出してましたが、
幅100%でメニューもないのに右サイドバーだと視界に入らないと思うんで、
一旦左側に変更してみたんですが、
メニューもないのに広告だけ左サイドだとバランスが悪い感じだったんで、
いっそのことサイドバーなしにして下広告にしてみた。

サポート掲示板と新着ブログページも変更考えたが、
サイドバー無しで100%だとちと広すぎぽいからそのままにした。

画面サイズが小さいと下広告は視界に入らなそうだが、
その場合は右上広告が視界に入りそう。

下広告だと情報量の少ないページで高さのバランス良くなる感じ。

table操作周りをまた修正しました

HTMLCollection使えばよりすっきりかけることに気づいたんで、tableリサイズ周りをまた修正しました。

ただ、W3Cの仕様書見ると列削除は、
deleteCell()
全行削除できそうなんですが、
FirefoxでdeleteCell()しても1行しか削除してくれなかったんで、
やっぱ全行チェックしないとダメぽい・・・

deleteRow()に関しても、
そもそもHTMLCollectionってのはrowspanに対応して無いようで使えなそう・・・
というか、それ考えると、deleteCell()もどっちにしろダメなのかな・・・

まあ、今までgetElementsByTagName('tr')したり、
<tr>内の子要素全部チェックしてたんですが、
HTMLCollectionのrowsとcellsで<tr><td><th>だけ抜けるらしい。
行番号なんかrowIndexで一発取得で、その分スッキリ。


あと、今まで<table>全体設定は<table>に対してやってましたが、
<thead>がある場合なんかは壊れちゃうと思うんで、
<tbody>がある場合は<tbody>だけを対象にするようにしました。
<thead>と<tfoot>は<table>設定で操作できないので手動編集の必要があります。

新エディタの右クリックメニューの仕様を少し変更しました

Firefox用の新ブログエディターですが、
<menuitem>にtextContentを設定していましたが、
label属性を設定した場合でもtextContentと同じようで、
Firefox以外に対応させる際は<menuitem>ではなく<command>になると思うのですが、
<command>はlabelが必須属性だと思うので、
現エディターもlabelを設定するようにしました。

とりあえず、Firefox12では変化は無いです。
Firefox8から新エディターになるはずなのでFirefox8も試したいところですが、
テスト環境が用意できませんでした。
多分平気だとは思います。

昨日、Opera 12を試したんですが・・・

昨日、Opera次期バージョンの12を試したんですが、
やはりFormDataに対応しているようで、
ブログ記事編集ページの画像挿入からの画像アップロード機能が使えましたので、
ブラウザ対応表の方修正しておきました。
Operaは12で若干改善です。
新エディタはまだ非対応です。

Operaはテストブラウザで唯一、range操作の際にキャレットが消滅するという問題があり、
他ブラウザ(IE8以下除く)ではEnter入力の際に<br>が挿入されますが、
Operaでこれやっちゃうとキャレットが消えちゃうんでそこが対応できてません。

table関連もうすこし修正しました

ブログエディタのtable関連ですが、もうすこし修正を加えました。

まず、右のセルと統合ですが、
やっぱり右のセルにcolspanが設定されている場合でも右のセルを消滅させてその分拡大するようにしました。
下との統合はそうだし、その方がわかりやすいと思う。

あと、セル統合の際に統合先セル内の要素は消滅となりましたが、
innerHTMLも連結するようにしました。
中身入りのセルを統合する際に中身も統合されます。

次に、機能追加ですが、
rowspan又はcolspanが設定されているセルの場合、右クリックから左右又は上下の分割ができるようになりました。


複雑なんで怪しい所ではありますが、
手動編集でHTML構文的におかしくなってる場合は別ですが、
予定通りなら、いかなる場合もズレは生じないようになったつもりですので、
ここらでtable関連の修正は終わりだと思います。

Firefox用の新エディターで直接編集以外のtable操作でセルにズレが生じるようならバグですので報告お願いします。

現状新エディターはFirefox以外非対応で旧エディターの利用率が高いですが、
HTML5対応が進めば他ブラウザでも新エディターが使えるようになるはずですので、
旧エディターの方は致命的な問題以外では修正するつもりはありません。

tableリサイズの件

tableリサイズの件ですが、
セルの統合に関しても一応ずれないようにしました。
まあ、かなり複雑で怪しいので、不具合に気づきましたら報告していただけると助かります。

Firefox以外の方は修正してないので関係ないです。

右のセルと統合は、右のセルが同じ行にあり、
rowspanが同一の場合のみ可能になりました。
元の仕様は、rowspan設定済みセルは統合不可で、右のセルが同じ行にあるか確認していませんでしたのでズレる可能性がありました。

下のセルと統合も右のセルと同じ感じですが、
右のセルと統合は右のセルにcolspanがあればcolspan1分だけ左を拡大して右を縮小になりますが、
下のセルと統合は下のセルにrowspanが設定されている場合はその分拡大して下のセルは消去にしました。
下のセルを縮小の場合、下のセルを一段下に移さないといけないのでちょっとめんどい。

先日のtableリサイズの件ですが

先日のtableリサイズの件ですが、もうすこし修正入れました。

まず、table全体のリサイズは以前修正していましたが、
まだズレるパターンがあったので修正。
新たに、行削除と列削除でもずれないようにしました。(したつもり)

まあ、これ、かなり複雑なんでかなり怪しい・・・
この手のツールではckeditorってのが有名ですが、ckeditorでもこの辺ダメっぽい。
というか、ckeditorはrowspan,colspanが絡む際のリサイズを考慮してないぽい。

あまりやらない作業だと思いますが、
tableリサイズでおかしな挙動があったら報告お願いします。

現時点で認識している問題がまだありますが、
1. 列追加の際に他の行がcolspanの影響を受けている際、追加される列は手前に挿入されてしまう。(これはズレは発生しないんで仕様ってことで)
2. 左右カラム統合の際に拡大するカラムか影響を受けるカラムがrowspan,colspanの影響を受けている場合ダメ。(これはまだ修正してないからするかも)
ってところです。

table全体設定でのリサイズ(拡大縮小)
行追加
行削除
に関しては修正しているんで問題ないつもり。