onclick= がHTMLエディタでXonclick=になる問題

onclick= がHTMLエディタでXonclick=になる問題

- Tatsuya Shirai の投稿
返信数: 16

 Wikiだけではなくフォーラムでも発生するならばHTMLエディタの問題でしょう.
 以下,onclick=(半角)の様々なバリエーションです.

onclick=: Xonclick=

onclickThisButtonNow=: XonlickThisButtonNow=

!onclick=: !Xonclick=

onclick!=: onclick!=

onclick¥=: onclick\=


 という訳で,onclickと=を入力すると,なぜか頭にXが付いてしまいます.

 この感じですと,onclickと=の間に英数字以外の文字が入っていれば大丈夫なようです.どこに原因があるのでしょう.いま本家のHTMLエディタを使用している訳ですので,本家にも関わる問題でしょう.

 なお,WebブラウザはIE7です.

Tatsuya Shirai への返信

Re: Xonclick= がHTMLエディタでXonclick=になる問題

- Tatsuya Shirai の投稿
これはFirefox2(WindowsXP)からです.

onclick=: Xonclick=

IEとの違いは<p></p>で行が囲まれていないことです.これが何か影響するかどうか.


Firefoxでもダメですね...となるとJavascriptの違いでも無さそうです.


Tatsuya Shirai への返信

Re: Xonclick= がHTMLエディタでXonclick=になる問題

- Tatsuya Shirai の投稿

 もう少し状況証拠を集めてみました.

 HTMLareaのソース中にonclickに対して何らかの処理をしていると思われる箇所を探し,一箇所だけ関係ありそうかと思う箇所を見つけました.しかしコメントアウトしても改善しない.もしかして,onclickではなく,もっと短くても反応するのか?と調べたところ,

onc=: Xonc=

onac=: Xonac=

on=: on=

onca=: Xonca=

onb=: Xonb=

on1=: on1=

oba=: oba=

anc=: anc=

onと1文字以上の英字と=がミニマムのようです.これは探すの大変ですねぇ.でもなぜ大文字のXを追加するのでしょう.何かヒントを思いついた方は御報告お願いします.しかしまぁ凄いバグが残っていましたね青あざ


本校のMoodle1.7でも同じ現象を確認しました.

Tatsuya Shirai への返信

Re: Xonclick= がHTMLエディタでXonclick=になる問題

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
lib/editor/htmlarea/plugins/GetHtml/get-html.jsの197行目あたりが影響していると思いますが、いかがでしょうか。笑顔

//override (hack) outwardHtml() to handle onclick suppression
HTMLArea.prototype._origOutwardHtml = HTMLArea.prototype.outwardHtml;
HTMLArea.prototype.outwardHtml = function(html) {
html = html.replace("onclick=\"try{if(document.designMode && document.designMode == 'on') return false;}catch(e){} window.open(", "onclick=\"window.open(");
html = this._origOutwardHtml(html);
return html;
};
Mitsuhiro Yoshida への返信

Re: Xonclick= がHTMLエディタでXonclick=になる問題

- Tatsuya Shirai の投稿

 そうなんですよ,"Xonclick="で検索して,replaceしているような箇所を探して,私も同じ所に到達しました.試しにコメントアウトして見たのですが,効果なし(キャッシュに残っていた可能性は否定できません)でした.

 そこでもう少し短くしてみたら"on="でもダメだということに気付き,もうこうなるとgrepする元気も無くなりましたヘトヘト

 勇み足でなければよいのだが,と思い,Using moodleをキーワード"Xon"でフォーラム検索してみた所,意図せずして化けてしまっていると思われる投稿が山のように引っ掛かりました.

 未だにこのmoodle.orgでも改善していないとなれば,これはまだバグと認識されていないのだろうと判断し,Moodle TrackerとUsing moodleのHTML Editorに(相変わらず酷い英語ですが...)報告しておきました.


おや? 吉田さんは化けませんね.
同じ内容をコピー&ペーストして投稿すると,私の場合は化けます.

私だけですか,もしかして.
ちょっとUsing moodleの方は削除してきましょう.

以下は,吉田さんの投稿をコピー&ペーストしたもの.
lib/editor/htmlarea/plugins/GetHtml/get-html.jsの197行目あたりが影響していると思いますが、いかがでしょうか。笑顔

//override (hack) outwardHtml() to handle onclick suppression
HTMLArea.prototype._origOutwardHtml = HTMLArea.prototype.outwardHtml;
HTMLArea.prototype.outwardHtml = function(html) {
html = html.replace("onclick=\"try{if(document.designMode && document.designMode == 'on') return false;}catch(e){} window.open(", "onclick=\"window.open(");
html = this._origOutwardHtml(html);
return html;
};
Tatsuya Shirai への返信

Re: Xonclick= がHTMLエディタでXonclick=になる問題

- Tatsuya Shirai の投稿

 さて、別のPC(Windows2000,IE6)からです。ただ、学内のネットワーク機器を経由しているという点では同じです。

onclick=

どうでしょう。

Tatsuya Shirai への返信

Re: Xonclick= がHTMLエディタでXonclick=になる問題

- Tatsuya Shirai の投稿

 Googleにて"Xonclick"(X付きで)をキーワードとして検索を掛けると,沢山引っかかりますね.Using Moodleがトップに表示されますが...xonclickという予約語は無いですよね?

http://moodle.org/mod/forum/discuss.php?d=8927

この投稿の第2段落の一行目,

<A Xonclick="window.open(this.href,'','top=200,left=200,width=400,height=180');return false;"

これなども私のブラウザではXが付いて見えます.


おや,

ONCLICK=: XonCLICK=

onを小文字にして,Xを付けていますね.Xon?

Tatsuya Shirai への返信

Re: Xonclick= がHTMLエディタでXonclick=になる問題

- Tatsuya Shirai の投稿

あったー,これじゃないですか(未確認).

lib/weblib.phpの1970行あたり.function clean_text()の最後です.

        /// Remove potential script events - some extra protection for undiscovered bugs in our code
            $text = eregi_replace("([^a-z])language(:space:*)=", "\\1Xlanguage=", $text);
            $text = eregi_replace("([^a-z])on([a-z]+)(:space:*)=", "\\1Xon\\2=", $text);

            return $text;

Tatsuya Shirai への返信

Re: Xonclick= がHTMLエディタでXonclick=になる問題

- Tatsuya Shirai の投稿

ということは.

Xlanguage=japanese

なんかもXが付くのでしょうかね.あ,付きましたね満面の笑顔

でも,どう対処すれば良いのでしょう.
このコードはコメントアウトして大丈夫なものでしょうか.そもそも目的が怪しそうですし.

Tatsuya Shirai への返信

Re: Xonclick= がHTMLエディタでXonclick=になる問題

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
Mitsuhiro Yoshida への返信

Re: Xonclick= がHTMLエディタでXonclick=になる問題

- Tatsuya Shirai の投稿

 早速,TrackerにPetr Skoda氏より回答がありました.

 セキュリティ関係の話のようです(詳細は意図的に転記しません).全てのコードの改善が完了するMoodle2.0まではこのままの方が安全とのことです.ううむ,でも悩みますね,これは.

Tatsuya Shirai への返信

Re: Xonclick= がHTMLエディタでXonclick=になる問題

- Haruhiko Okumura の投稿
えっえっ,よく理解できていません。

onclick=hoge

language=hoge

Haruhiko Okumura への返信

Re: Xonclick= がHTMLエディタでXonclick=になる問題

- Tatsuya Shirai の投稿

 奥村先生も大丈夫ですね...(やはり私だけ?)

 私が書き込むと,

Xonclick=hoge

Xlanguage=hoge

こうなってしまうのです.Googleで検索を掛けると"Xonclick"でいくつも引っ掛かるということは,他にも同じ現象が発生する方が居ると言うことだと期待していたのですが.

 理屈は分かりませんが,もしかしたらWindowsのWebブラウザを使うとNG,ということかなぁと考えているのですが,どうでしょう?


 あ!もしかしたら,クライアントのOSを調べて,クライアントPCがWindowsの場合は改行コードなどを正規化するために,function clean_text()を通していて,LinuxやMacの場合はこの処理を省略しているのかも知れませんよ.(だとするとセキュリティの問題,という理由はどうなるのだろうもうろうとした目

 Windowsの端末で試してみて頂けませんか?

 うーん,やはり色々な検証作業のために,LinuxかMacの環境も必要ですねぇ.

Haruhiko Okumura への返信

Re: Xonclick= がHTMLエディタでXonclick=になる問題

- Haruhiko Okumura の投稿
再挑戦。

onclick=hoge

language=hoge

Haruhiko Okumura への返信

Re: Xonclick= がHTMLエディタでXonclick=になる問題

- Haruhiko Okumura の投稿

おぉ,着いた着いた!

そういうことですか,うーん。

じつは,最初のは「プレインテキストフォーマット」で投稿しました。
上のは「Moodleオートフォーマット」です。
これはHTMLフォーマット。

onclick=hoge

language=hoge

onclick=hoge

language=hoge

onclick=hoge
language=hoge