このファイル: /home/web6047/www/cgi-bin/prj/20180128-home_javascript/20191113-newapp.js/20191120-汎用要素リサイズ試作 - snapshot 20191211/k.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
function getPseudoStyle( keySelector ) {
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
let res = new Object();
67
68
69
70
for( let i = 0; i < document.styleSheets.length; i++ ){
71
let ss = document.styleSheets[ i ];
72
for( let j = 0; j < ss.cssRules.length; j++ ){
73
let selectorText = ss.cssRules[ j ].selectorText;
74
let selectors = selectorText.split( /,/ );
75
selectors = selectors.map( selector => selector.replace( /^ +| +$/g, "" ) );
76
if( selectors.indexOf( keySelector ) > -1 ){
77
let text = ss.cssRules[ j ].style.cssText;
78
let pairs = text.split( /;/ );
79
for( let k = 0; k < pairs.length; k++ ) {
80
let pair = pairs[ k ].split( /:/ );
81
let name = pair[ 0 ].replace( /^ /, "" );
82
let value = pair[ 1 ];
83
res[ name ] = value;
84
}
85
}
86
}
87
}
88
return res;
89
}
90
91
92
93
AdditionalKey = function() {
94
this.tableFlg = 0;
95
96
97
this.touchFunction1 = function( te ) {
98
for( var i = 0; i < te.changedTouches.length; i++ ) {
99
var touch = te.changedTouches[ i ];
100
touch.target.onmousedown( te );
101
}
102
return false;
103
}
104
this.touchFunction2 = function( te ) {
105
for( var i = 0; i < te.changedTouches.length; i++ ) {
106
var touch = te.changedTouches[ i ];
107
touch.target.onmouseup( te );
108
}
109
}
110
addEventListener( "touchstart", this.touchFunction1 );
111
addEventListener( "touchend", this.touchFunction2 );
112
}
113
114
115
AdditionalKey.prototype.setSoftwareKey = function( elementId, onkeydownx, onkeyupx, keyNum ) {
116
let element = document.getElementById( elementId );
117
let AK = this;
118
119
120
121
122
let props = [ "background-color", "font-size", "font-weight" ];
123
124
125
let styleHover = getPseudoStyle( "td:hover" );
126
let styleOnmousedown = new Object();
127
props.map( name => styleOnmousedown[ name ] = styleHover[ name ] );
128
129
130
let styleDefault = getPseudoStyle( "td" );
131
let styleOnmouseup = new Object();
132
props.map( name => styleOnmouseup[ name ] = styleDefault[ name ] );
133
134
135
element.addEventListener( "touchstart", function( e ) {
136
props.map( name => e.target.style[ name ] = styleOnmousedown[ name ] );
137
} );
138
element.addEventListener( "touchend", function( e ) {
139
props.map( name => e.target.style[ name ] = styleOnmouseup[ name ] );
140
} );
141
142
143
144
145
element.onmousedown = function( e ) {
146
e.preventDefault();
147
onkeydownx( { which:keyNum } ) };
148
element.onmouseover = function( e ) {
149
if( ! AK.tableFlg ) return;
150
onkeydownx( { which:keyNum } );
151
}
152
element.onmouseup = function( e ) { onkeyupx( { which:keyNum } ) }
153
element.onmouseout = function( e ) { onkeyupx( { which:keyNum } ) }
154
}
155
156
157
158
AdditionalKey.prototype.tweakSoftwarePad = function( elementId ) {
159
160
let element = document.getElementById( elementId );
161
let AK = this;
162
163
164
element.onmousedown = function( e ) { AK.tableFlg = 1 }
165
element.onmouseup = function( e ) { AK.tableFlg = 0 }
166
167
168
element.style.WebkitUserSelect = "none";
169
element.style.MozUserSelect = "none";
170
element.style.MsUserSelect = "none";
171
element.style.userSelect = "none";
172
}