はじめに
MovableTypeのCheckReleaseで使用している場合、禁止ワードなどあった場合、申請をだせないように・・
って話で、メーカーに要望は、出したのですが・・・
つくってみる・・
きっと、いつになるかわからないし・・・
下記みたいのをつくってみた・・・
<script>
var Words = [
'NGワード',
'禁止用語',
];
var result = $("目的の要素").html();
Words.push('\\d{1,4}\/\\d{1,2}\/\\d{1,2}');
Words.push('\\d{1,4}年\\d{1,2}月\\d{1,2}日');
for (i = 0; i < Words.length; i++) {
var ngword = Words[i];
if(ngword) {
var re = new RegExp(ngword , 'gi');
var or = result.match(re);
if(or != null) {
if(or.length == 1) {
result = result.replace(re, "<span style=\"background-color:#ff9;\">"+or+"</span>");
} else {
for (j = 0; j < or.length; j++) {
result = result.replace(new RegExp(or[j], 'g'), "<span style=\"background-color:#ff9;\">"+or[j]+"</span>");
}
}
}
}
}
$("目的の要素").html(result);
</script>
失敗・・・
ああ!htmlタグ要素まで、置換されるのね・・・エレメントのテキストだけがええなぁ・・・
nodeでやるのか。。。めんどい・・・
Chromeのプラグインでもないか見てみたけど・・・****で置き換えるみたいのしかない・・ねぇ
jquery.mark.js
jquery.mark.jsっていうのを発見!!
指定したキーワードをマーカーしてくれるらしい!!
これだ!!
サイトはこちら・・
https://markjs.io/
書き換える・・
正規表現もしたいから・・・markRegExpを使う・・
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mark.js/8.11.1/jquery.mark.js"></script>
<script>
var Words = [
'NGワード',
'禁止用語',
];
$(function () {
var filter = Words;
var doc = $("目的の要素").html();
filter.push('\\d{1,4}\/\\d{1,2}\/\\d{1,2}');
filter.push('\\d{1,4}年\\d{1,2}月\\d{1,2}日');
var result = doc;
for (i = 0; i < filter.length; i++) {
var ngword = filter[i];
if(ngword) {
$('#result').markRegExp(new RegExp(ngword , 'gi'));
}
}
$("目的の要素").html(result);
</script>
MovableTypeに組み込む・・・
MovableTypeのプレビュー時に、NGワードをマーカー表示する感じで・・・
ヘッダー部に下記を追加することで記事のプレビューだけ反映する感じで・・・
<mt:If name="entry_archive">
<mt:If name="preview_template">
<script src="<$mt:WebsiteURL encode_xml="1"$>common/js/ngcheck.js"></script>
</mt:If>
</mt:If>
さいごに・・・
ほんとは・・・申請できないようにしたいけど・・・
つなぎで・・・