@jazzに一斉メッセージ送信機能追加したった
そもそも
趣味でビッグバンドジャズをやってまして、そこの情報共有に @jazz http://www.jazz.co.jp/ というサイトを使ってるんですが、ユーザへの一斉メッセージ送信機能が無く不便。
ソースを覗いたところリクエストが単純だったので、これはなんとかなるんじゃないのってことでChrome拡張で作ってみた。
できた
すべてのソースはこちらに上げてあります。
https://github.com/hashikuchi/atJazzExtension
$(function(){ function sendToAllMembers(IDList){ $.each(IDList, function(){ sendMessage(this); }); alert("送信完了しました!"); } function sendMessage(recipientID){ var title = $("[name='title']").val(); var article = $("[name='article']").val(); $.ajax({ beforeSend: function(xhr){ xhr.overrideMimeType("text/html;charset=Shift_JIS"); }, type: "POST", url: "message_send.html", data:"to_Menber_ID=" + recipientID + "&title=" + EscapeSJIS(title) + "&article=" + EscapeSJIS(article) , failure:function(){ alert("送信に失敗しました。送信先:" + recipientID); }, }); } // Recipients ID Lists var IDList = new Array( // example "XXXXX", "YYYYY", "ZZZZZ" ) var normalcss = { "border": "1px #1a5bb0 solid", "padding": "2px 30px", "margin-left": "20px", "color": "#fff", "background-color": "#206fd8", "font-size": "1.2em", "font-weight": "bold", "cursor": "pointer" } var hovercss = { "background-color": "#87c339", "border": "1px #72b023 solid" } var sendToAllMembersButton = $("<input>").attr({ type: "button", value: "全員に送信する" }).css(normalcss).hover(function(){ $(this).css(hovercss); },function(){ $(this).css(normalcss); }).click(function(){ sendToAllMembers(IDList); }); $("[value='送信する']").after(sendToAllMembersButton); })();
苦労したところ
日本語の文字化けを解消するのが時間かかりました。はてな人力検索にお願いしたところ、すぐに回答をいただけました!id:Lhankor_Mhy さんありがとうございました。
dataにオブジェクト渡していたのを、Shift_JISにエンコードした文字列を渡すようにして解決。このあたりの挙動の違いがよくわかっていないな。勉強せねば。。。