ようへい

2012年10月17日水曜日

Firefox での CDATA の扱い

Firefox 17 beta1 に更新したところ、とあるGreasemonkeyスクリプトが動かなくなった。
スクリプト内部で使用している、CDATAが、Firefox 17ではsyntax errorとなっていた。
警告: E4X は非推奨となりました。 この機能は、Firefox 16 において content 向けにはデフォルトで無効となり、Firefox 17 では chrome 向けにもデフォルトで無効となる予定です。 そして、Firefox 18 において削除される予定となっています。 代わりに、DOMParser/DOMSerializer や非ネイティブの JXON アルゴリズムを使用してください。
JavaScript
E4X が無効化されました

 Bug 778851 – Turn javascript.options.xml.content off by default

ECMAScript for XML (E4X) は非推奨となり、Firefox 17 で無効化されました。隠し設定 javascript.options.xml.content の値を true に変更すれば有効になりますが、Firefox 18 Firefox の近い将来のバージョン (当初 Firefox 18 とされていましたが現状未定のようです) では実装そのものが完全に削除される予定です。
Firefox 17 のサイト互換性に関わる修正のまとめ | Mozilla Developer Street (modest)
https://dev.mozilla.jp/2012/10/firefox-17-site-compatibility/
これによると、ECMAScript for XML (E4X) は、Firefox 17ではデフォルトで無効、Firefox 18で削除予定らしい。
about:configで有効にできるみたいですけど、一時しのぎにしかならないな。
Greasemonkeyのページにも書いてあった。
E4X is deprecated. It will stop working in phases, Firefox 16 through 18.
Multi Line Strings - GreaseSpot Wiki
http://wiki.greasespot.net/Multi_Line_Strings
こうなると、CDATAで実装していたようなヒアドキュメントをJavaScriptで実装する手段が無いな・・・。
ということで、CDATAを文字列の配列に変換するスクリプトを作りました。
詳しくは以下のページを参照ください。

JavaScript内の CDATA → 文字列配列 変換スクリプト - ログろいど

しかし、これからGreasemonkey内にスタイルシート埋め込む時の手間が増えるな・・・。
何かいい方法無いだろうか。
その後
SpiderMonkey から E4X サポートが削除されました。
Firefox 21 ベータ版リリースノート
http://www.mozilla.jp/firefox/21.0/releasenotes/
Firefox 21で正式に削除となるようです。
関連記事

0 件のコメント:

コメントを投稿