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/'; },
68 onclose: function(ev) {
69 //alert('接続が閉じられました');
72 onfocus: function(ev) {
73 wordring.socket.send(JSON.stringify({
75 'edit_mode': wordring.edit_mode,
80 wordring.socket.send(JSON.stringify({
86 onclick: function(ev) {
87 if(!wordring.edit_mode) return;
90 for(node = ev.target; node.nodeType == Node.ELEMENT_NODE; node = node.parentNode) {
91 if(node.hasAttribute('data-wordring-segment'))
93 var id = node.getAttribute('data-wordring-segment');
94 wordring.socket.send(JSON.stringify({
97 'source': wordring.segments[id].html,
98 'target': node.innerHtml,
105 set_segment: function(json) {
107 wordring.segments[id].element.innerHTML = json.html;
110 set_edit_mode: function(json) {
111 wordring.edit_mode = json.edit_mode;
115 window.addEventListener('load', function(ev){