Ticket #13407

Sieb が Safari で動かない不具合の修正
Open Date: 2008-08-31 21:25 Last Update: 2008-09-27 20:28

Reporter:
Owner:
Status:
Closed
Component:
(None)
MileStone:
(None)
Priority:
7
Severity:
5 - Medium
Resolution:
Fixed
File:
1

Details

Sieb の不具合を2つ修正しました。

・Sieb 経由だと図形の前に & が表示される
・Safari で Sieb が機能しない場合がある

具体的には、以下の箇所を修正しています。

・lt;svg でなく <svg という文字列を置換するように変

・<script> で始まる文字列を innerHTML で代入するとおか
しな動作をするようなので、ダミーの &nbsp; を先頭に追加
・Safari だと innerHTML で取得した時点で &gt; → > に変
換されているようなので、\/svg(&gt;|>) のような正規表現
に変更
・置換後の文字列の部分を、$1 を使った書き方に変更

ブックマークレットの部分の HTML を切り出して添付してお
きます。

Ticket History (3/12 Histories)

2008-08-31 21:25 Updated by: revulo
  • File 3328: sieb_safari.patch is attached
2008-09-01 19:58 Updated by: dhrname
  • Resolution Update from None to Accepted
  • Priority Update from 5 - Medium to 9 - Highest
Comment
Logged In: YES
user_id=32883

ありがとうございます。
とても助かりました。パッチを当ててみます。
2008-09-01 22:58 Updated by: dhrname
  • Owner Update from (None) to dhrname
Comment
Logged In: YES
user_id=32883

リビジョン460で適用しました。

ただし、「&amp;lt;」という文字列が、
「&amp<」という文字に変換されてしまいます。
(Safari3.1.2やOpera9.52で、以下のページのSiebを作
動した場合)
http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/
*checkout*/trunk/sieb.html?rev=460&root=sie

原因は正規表現の仕様だとにらんでいます。
2008-09-02 01:34 Updated by: revulo
Comment
Logged In: YES
user_id=33975

http://sie.sourceforge.jp/sie-min.js を見てみた
ら、SIE 0.11 くらいの古いファイルのままのようなの
で、そのせいではないでしょうか?
未確認ですが、SIE 0.26 以降に更新すれば直りそうな
気がします。
2008-09-02 02:09 Updated by: revulo
Comment
Logged In: YES
user_id=33975

それと、/(&amp;lt;svgs)/ の正規表現は、/
(&amp;lt;svg(?:s|>))/ に変える方がいいかもしれま
せん。
他所でも書いたように、属性無しで <svg> という書き
方をすることがありうるからです。
2008-09-02 02:20 Updated by: revulo
Comment
Logged In: YES
user_id=33975

うまく書けなかったので書き直します。

/(&amp;lt;svg(?:¥s|>))/ (¥は本当は半角)

です。
2008-09-02 19:25 Updated by: dhrname
Comment
Logged In: YES
user_id=32883

revuloさんへ。申し訳ないです。バグは私の勘違いだっ
たようです。
ファイルのリンク先を間違えていました。「sie-
min.js」ではなくて、正しくは「sie-mini.js」です。

あと、/(&amp;lt;svg(?:¥s|>))/は対応させました。

以上を、リビジョン462までに修正しました。
http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/
*checkout*/trunk/sieb.html?rev=462&root=sie
2008-09-04 05:06 Updated by: revulo
Comment
Logged In: YES
user_id=33975

度々すみません。考えてみたらこれでは対応が不十分
で、こうしないといけません。

/(&amp;lt;svg(?:¥s|&amp;gt;|>))/ (¥は本当は半
角)

自分でも混乱してきたので、なぜこういう正規表現にな
るのか備忘録として書いておきます。

1. 基本的には sie.js と同様に /<svg(?:¥s|>)/ で良


2. しかしソースがエンコードされているので、検索す
べき文字列は /&lt;svg(?:¥s|&gt;)/ になる

3. Safari ではなぜか &gt; → > に変換されたソース
が得られるので、/&lt;svg(?:¥s|&gt;|>)/ のようにし
て対応させる

4. ブックマークレットなので & → &amp; に変換して
おく

5. あとでこの文字列を $1 として利用したいので、全
体をカッコで囲む。
2008-09-04 20:15 Updated by: dhrname
Comment
Logged In: YES
user_id=32883

了解です。
リビジョン467で修正しました。
2008-09-06 19:35 Updated by: dhrname
  • Priority Update from 9 - Highest to 7
2008-09-15 18:35 Updated by: dhrname
  • Resolution Update from Accepted to Fixed
2008-09-27 20:28 Updated by: dhrname
  • Ticket Close date is changed to 2008-09-27 20:28
  • Status Update from Open to Closed

Attachment File List

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login