/
WebCocoa.html
99 lines (82 loc) · 2.16 KB
/
WebCocoa.html
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<html>
<style>
html
{
font-family: lucida grande;
}
#dump
{
white-space: pre;
}
</style>
<body>
<h1>WebView's context used as JSCocoa source</h1>
<a href='http://yahoo.com'>Yahoo</a>
<p>
<div id='dump'></div>
<script>
try
{
function log(str)
{
str = str.replace(/</g, '<')
str = str.replace(/>/g, '>')
document.getElementById('dump').innerHTML += str + '\n'
}
function dumpHash(o)
{
var str = ''
for (var i in o) str += i + '=' + (o[i]) + '\n'
return str
}
if ('OSX' in this) log('HAS OSX')
else log('no JSCocoa :(')
var delegate = OSX.NSApplication.sharedApplication.delegate
/*
var point = new OSX.NSPoint(123, 456)
if (point.x != 123 || point.y != 456) throw 'new NSPoint failed'
var rect = new OSX.NSRect(4, 7, 13, 26)
if (rect.origin.x != 4 || rect.origin.y != 7
|| rect.size.width != 13 || rect.size.height != 26) throw 'new NSRect failed'
log('app delegate=' + delegate)
log('NSDate(now)=' + OSX.NSDate.date)
log('NSDate=' + OSX.NSDate)
log('NSDate.valueOf()=' + OSX.NSDate.valueOf())
log('OSX=' + OSX)
log('OSX instanceof Node=' + (OSX instanceof Node))
log('OSX.NSDate instanceof Node=' + ((OSX.NSDate) instanceof Node))
log('OSX.NSDate.prototype=' + OSX.NSDate.prototype)
log('OSX.NSDate.__proto__=' + OSX.NSDate.__proto__)
*/
log('typeof OSX=' + (typeof OSX))
log('typeof OSX.NSDate=' + (typeof OSX.NSDate))
log('OSX.NSDate.info=' + dumpHash(OSX.NSDate.info))
log('OSX.NSDate.info.className=' + (OSX.NSDate.info.className))
/*
var _old_toString = Object.prototype.toString
Object.prototype.toString = function ()
{
var str = _old_toString.call(this)
if (!str.match(/JSCocoa/))
return str
return '[Object ' + (this.valueOf()) + ']'
}
*/
with (OSX)
{
log('time=' + NSDate.date)
var methods = NSDate.info.methods.map(function(i){return(i.name.valueOf());})
log('m=' + methods)
}
var obj = OSX.NSDate.date
var a = Object.prototype.toString.call(obj)
log('a=' + a + '**********')
}
catch(e)
{
document.body.style.backgroundColor = 'red'
document.body.innerHTML = '<pre>' + e + '</pre>'
}
</script>
</body>
</html>