3 socket: null, // TMとの通信用ソケット。
4 port: 0, // ソケットのポート番号。
5 edit_mode: false, // 編集モード判別フラグ。
9 segments: null, // パラグラフの連想配列。
13 wordring.socket = new WebSocket('ws://localhost:' + window.wordring.port + '/');
14 wordring.socket.onopen = wordring.onopen;
15 wordring.socket.onmessage = wordring.onmessage;
16 wordring.socket.onerror = wordring.onerror;
17 wordring.socket.onclose = wordring.onclose;
20 wordring.segments = {};
21 var elements = document.getElementsByTagName('span');
24 for(; i < elements.length ; i++)
26 element = elements.item(i);
27 if(!element.hasAttribute('data-wordring-segment')) continue;
29 var id = element.getAttribute('data-wordring-segment');
30 wordring.segments[id] = {};
31 wordring.segments[id].element = element;
32 wordring.segments[id].html = element.innerHTML;
36 onopen: function(ev) {
37 document.addEventListener('click', wordring.onclick);
38 window.addEventListener('focus', wordring.onfocus);
39 window.addEventListener('blur', wordring.onblur);
41 wordring.socket.send(JSON.stringify({
43 'edit_mode': wordring.edit_mode,
46 //if(document.hasFocus) wordring.socket.send(JSON.stringify({
48 // 'edit_mode': wordring.edit_mode,
50 //wordring.socket.send(JSON.stringify({
52 // 'html': document.body.innerHTML,
56 onmessage: function(ev) {
57 var json = JSON.parse(ev.data);
60 case 'set_segment': wordring.set_segment(json); break;
61 case 'set_edit_mode': wordring.set_edit_mode(json); break;
65 onerror: function(ev) {
66 //document.location.href = 'http://www.yahoo.co.jp/';
69 onclose: function(ev) {
70 //alert('接続が閉じられました');
73 onfocus: function(ev) {
74 wordring.socket.send(JSON.stringify({
76 'edit_mode': wordring.edit_mode,
81 wordring.socket.send(JSON.stringify({
87 onclick: function(ev) {
88 if(!wordring.edit_mode) return;
91 for(node = ev.target; node.nodeType == Node.ELEMENT_NODE; node = node.parentNode) {
92 if(node.hasAttribute('data-wordring-segment'))
94 var segment_id = node.getAttribute('data-wordring-segment');
95 wordring.socket.send(JSON.stringify({
97 'segment_id': segment_id,
98 'source': wordring.segments[segment_id].html,
99 'target': node.innerHtml,
106 set_segment: function(json) {
108 wordring.segments[id].element.innerHTML = json.html;
111 set_edit_mode: function(json) {
112 wordring.edit_mode = json.edit_mode;
116 window.addEventListener('load', function(ev){