wysihtml5_with_ps 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Makefile +98 -0
- data/Rakefile +38 -0
- data/lib/base/base.js +139 -0
- data/lib/rangy/rangy-core.js +3211 -0
- data/lib/wysihtml5_with_ps/version.rb +3 -0
- data/test/assert/html_equal_test.js +32 -0
- data/test/browser_test.js +85 -0
- data/test/dom/auto_link_test.js +105 -0
- data/test/dom/contains_test.js +18 -0
- data/test/dom/convert_to_list_test.js +101 -0
- data/test/dom/copy_attributes_test.js +51 -0
- data/test/dom/copy_styles_test.js +110 -0
- data/test/dom/delegate_test.js +62 -0
- data/test/dom/get_as_dom_test.js +55 -0
- data/test/dom/get_parent_element_test.js +161 -0
- data/test/dom/get_style_test.js +54 -0
- data/test/dom/has_element_with_class_name_test.js +29 -0
- data/test/dom/has_element_with_tag_name_test.js +25 -0
- data/test/dom/insert_css_test.js +31 -0
- data/test/dom/observe_test.js +83 -0
- data/test/dom/parse_test.js +614 -0
- data/test/dom/rename_element_test.js +28 -0
- data/test/dom/resolve_list_test.js +46 -0
- data/test/dom/sandbox_test.js +184 -0
- data/test/dom/set_attributes_test.js +15 -0
- data/test/dom/set_styles_test.js +19 -0
- data/test/editor_test.js +547 -0
- data/test/incompatible_test.js +60 -0
- data/test/index.html +126 -0
- data/test/lang/array_test.js +22 -0
- data/test/lang/object_test.js +22 -0
- data/test/lang/string_test.js +19 -0
- data/test/quirks/clean_pasted_html_test.js +11 -0
- data/test/undo_manager_test.js +94 -0
- metadata +116 -0
@@ -0,0 +1,62 @@
|
|
1
|
+
module("wysihtml5.dom.delegate", {
|
2
|
+
setup: function() {
|
3
|
+
this.container = document.createElement("div");
|
4
|
+
this.link1 = document.createElement("a");
|
5
|
+
this.link2 = document.createElement("a");
|
6
|
+
this.nestedSpan = document.createElement("span");
|
7
|
+
|
8
|
+
this.link2.appendChild(this.nestedSpan);
|
9
|
+
this.container.appendChild(this.link1);
|
10
|
+
this.container.appendChild(this.link2);
|
11
|
+
|
12
|
+
document.body.appendChild(this.container);
|
13
|
+
},
|
14
|
+
|
15
|
+
teardown: function() {
|
16
|
+
this.container.parentNode.removeChild(this.container);
|
17
|
+
}
|
18
|
+
});
|
19
|
+
|
20
|
+
test("Basic test", function() {
|
21
|
+
expect(3);
|
22
|
+
|
23
|
+
var that = this;
|
24
|
+
|
25
|
+
wysihtml5.dom.delegate(this.container, "a", "click", function(event) {
|
26
|
+
ok(true, "Callback handler executed");
|
27
|
+
equal(this, that.link1, "Callback handler executed in correct scope");
|
28
|
+
ok(event.stopPropagation && event.preventDefault, "Parameter passed into callback handler is a proper event object");
|
29
|
+
});
|
30
|
+
|
31
|
+
QUnit.triggerEvent(this.link1, "click");
|
32
|
+
});
|
33
|
+
|
34
|
+
test("Click on nested element works as well", function() {
|
35
|
+
expect(3);
|
36
|
+
|
37
|
+
var that = this;
|
38
|
+
|
39
|
+
wysihtml5.dom.delegate(this.container, "a", "click", function(event) {
|
40
|
+
ok(true, "Callback handler executed");
|
41
|
+
equal(this, that.link2, "Callback handler executed in correct scope");
|
42
|
+
ok(event.stopPropagation && event.preventDefault, "Parameter passed into callback handler is a proper event object");
|
43
|
+
});
|
44
|
+
|
45
|
+
QUnit.triggerEvent(this.nestedSpan, "click");
|
46
|
+
});
|
47
|
+
|
48
|
+
test("Delegation on the body", function() {
|
49
|
+
expect(1);
|
50
|
+
|
51
|
+
var delegater = wysihtml5.dom.delegate(document.body, ".delegation-test", "mousedown", function() {
|
52
|
+
ok(true, "Callback handler executed");
|
53
|
+
});
|
54
|
+
|
55
|
+
this.link1.className = "delegation-test another-class";
|
56
|
+
|
57
|
+
QUnit.triggerEvent(this.link1, "mousedown");
|
58
|
+
|
59
|
+
delegater.stop();
|
60
|
+
|
61
|
+
QUnit.triggerEvent(this.link1, "mousedown");
|
62
|
+
});
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module("wysihtml5.dom.getAsDom", {
|
2
|
+
teardown: function() {
|
3
|
+
var iframe;
|
4
|
+
while (iframe = document.querySelector("iframe.wysihtml5-sandbox")) {
|
5
|
+
iframe.parentNode.removeChild(iframe);
|
6
|
+
}
|
7
|
+
}
|
8
|
+
});
|
9
|
+
|
10
|
+
test("Basic test", function() {
|
11
|
+
var result;
|
12
|
+
|
13
|
+
result = wysihtml5.dom.getAsDom('<span id="get-in-dom-element-test">foo</span>');
|
14
|
+
equal(result.nodeName, "DIV");
|
15
|
+
equal(result.ownerDocument, document);
|
16
|
+
equal(result.firstChild.nodeName, "SPAN");
|
17
|
+
equal(result.childNodes.length , 1);
|
18
|
+
equal(result.firstChild.innerHTML, "foo");
|
19
|
+
ok(!document.getElementById("get-in-dom-element-test"));
|
20
|
+
|
21
|
+
result = wysihtml5.dom.getAsDom("<i>1</i> <b>2</b>");
|
22
|
+
equal(result.childNodes.length, 3);
|
23
|
+
|
24
|
+
result = wysihtml5.dom.getAsDom(document.createElement("div"));
|
25
|
+
equal(result.innerHTML.toLowerCase(), "<div></div>");
|
26
|
+
});
|
27
|
+
|
28
|
+
|
29
|
+
test("HTML5 elements", function() {
|
30
|
+
var result;
|
31
|
+
|
32
|
+
result = wysihtml5.dom.getAsDom("<article><span>foo</span></article>");
|
33
|
+
equal(result.firstChild.nodeName.toLowerCase(), "article");
|
34
|
+
equal(result.firstChild.innerHTML.toLowerCase(), "<span>foo</span>");
|
35
|
+
|
36
|
+
result = wysihtml5.dom.getAsDom("<output>foo</output>");
|
37
|
+
equal(result.innerHTML.toLowerCase(), "<output>foo</output>");
|
38
|
+
});
|
39
|
+
|
40
|
+
|
41
|
+
asyncTest("Different document context", function() {
|
42
|
+
expect(2);
|
43
|
+
|
44
|
+
new wysihtml5.dom.Sandbox(function(sandbox) {
|
45
|
+
var result;
|
46
|
+
|
47
|
+
result = wysihtml5.dom.getAsDom("<div>hello</div>", sandbox.getDocument());
|
48
|
+
equal(result.firstChild.ownerDocument, sandbox.getDocument());
|
49
|
+
|
50
|
+
result = wysihtml5.dom.getAsDom("<header>hello</header>", sandbox.getDocument());
|
51
|
+
equal(result.innerHTML.toLowerCase(), "<header>hello</header>");
|
52
|
+
|
53
|
+
start();
|
54
|
+
}).insertInto(document.body);
|
55
|
+
});
|
@@ -0,0 +1,161 @@
|
|
1
|
+
module("wysihtml5.dom.getParentElement", {
|
2
|
+
setup: function() {
|
3
|
+
this.container = document.createElement("div");
|
4
|
+
}
|
5
|
+
});
|
6
|
+
|
7
|
+
|
8
|
+
test("Basic test - nodeName only", function() {
|
9
|
+
this.container.innerHTML = "<ul><li>foo</li></ul>";
|
10
|
+
|
11
|
+
var listItem = this.container.querySelector("li"),
|
12
|
+
textNode = listItem.firstChild,
|
13
|
+
list = this.container.querySelector("ul");
|
14
|
+
equal(wysihtml5.dom.getParentElement(listItem, { nodeName: "LI" }), listItem);
|
15
|
+
equal(wysihtml5.dom.getParentElement(listItem, { nodeName: ["LI", "UL"] }), listItem);
|
16
|
+
equal(wysihtml5.dom.getParentElement(listItem, { nodeName: "UL" }), list);
|
17
|
+
equal(wysihtml5.dom.getParentElement(textNode, { nodeName: "UL" }), list);
|
18
|
+
equal(wysihtml5.dom.getParentElement(listItem, { nodeName: "ul" }), null);
|
19
|
+
equal(wysihtml5.dom.getParentElement(listItem, { nodeName: "SPAN" }), null);
|
20
|
+
});
|
21
|
+
|
22
|
+
|
23
|
+
test("Check 'levels' param - nodeName only", function() {
|
24
|
+
this.container.innerHTML = "<div><div><ul><li></li></ul></div></div>";
|
25
|
+
|
26
|
+
var listItem = this.container.querySelector("li"),
|
27
|
+
nestedDiv = this.container.querySelector("div").querySelector("div");
|
28
|
+
equal(wysihtml5.dom.getParentElement(listItem, { nodeName: "DIV" }, 2), null);
|
29
|
+
equal(wysihtml5.dom.getParentElement(listItem, { nodeName: "DIV" }, 3), nestedDiv);
|
30
|
+
|
31
|
+
});
|
32
|
+
|
33
|
+
|
34
|
+
test("Basic test - nodeName + className", function() {
|
35
|
+
this.container.innerHTML = '<span class="wysiwyg-color-red wysiwyg-color-green">foo</span>';
|
36
|
+
|
37
|
+
var spanElement = this.container.firstChild,
|
38
|
+
textNode = this.container.firstChild.firstChild,
|
39
|
+
result;
|
40
|
+
|
41
|
+
result = wysihtml5.dom.getParentElement(textNode, {
|
42
|
+
nodeName: "SPAN",
|
43
|
+
className: "wysiwyg-color-green",
|
44
|
+
classRegExp: /wysiwyg-color-[a-z]+/g
|
45
|
+
});
|
46
|
+
equal(result, spanElement);
|
47
|
+
|
48
|
+
result = wysihtml5.dom.getParentElement(textNode, {
|
49
|
+
nodeName: ["STRONG", "SPAN"],
|
50
|
+
className: "wysiwyg-color-green",
|
51
|
+
classRegExp: /wysiwyg-color-[a-z]+/g
|
52
|
+
});
|
53
|
+
equal(result, spanElement);
|
54
|
+
|
55
|
+
result = wysihtml5.dom.getParentElement(textNode, {
|
56
|
+
nodeName: ["STRONG"],
|
57
|
+
className: "wysiwyg-color-green",
|
58
|
+
classRegExp: /wysiwyg-color-[a-z]+/g
|
59
|
+
});
|
60
|
+
equal(result, null);
|
61
|
+
|
62
|
+
result = wysihtml5.dom.getParentElement(textNode, {
|
63
|
+
nodeName: "DIV",
|
64
|
+
className: "wysiwyg-color-green",
|
65
|
+
classRegExp: /wysiwyg-color-[a-z]+/g
|
66
|
+
});
|
67
|
+
equal(result, null);
|
68
|
+
|
69
|
+
result = wysihtml5.dom.getParentElement(textNode, {
|
70
|
+
nodeName: "SPAN",
|
71
|
+
className: "wysiwyg-color-blue",
|
72
|
+
classRegExp: /wysiwyg-color-[a-z]+/g
|
73
|
+
});
|
74
|
+
equal(result, null);
|
75
|
+
|
76
|
+
result = wysihtml5.dom.getParentElement(textNode, {
|
77
|
+
nodeName: "SPAN",
|
78
|
+
className: "wysiwyg-color-red",
|
79
|
+
classRegExp: /wysiwyg-color-[a-z]+/g
|
80
|
+
});
|
81
|
+
equal(result, null);
|
82
|
+
|
83
|
+
result = wysihtml5.dom.getParentElement(spanElement, {
|
84
|
+
nodeName: "SPAN",
|
85
|
+
className: "wysiwyg-color-green",
|
86
|
+
classRegExp: /wysiwyg-color-[a-z]+/g
|
87
|
+
});
|
88
|
+
equal(result, spanElement);
|
89
|
+
|
90
|
+
result = wysihtml5.dom.getParentElement(spanElement, {
|
91
|
+
nodeName: "span",
|
92
|
+
className: "wysiwyg-color-green",
|
93
|
+
classRegExp: /wysiwyg-color-[a-z]+/g
|
94
|
+
});
|
95
|
+
equal(result, null);
|
96
|
+
});
|
97
|
+
|
98
|
+
|
99
|
+
test("Check 'levels' param - nodeName + className", function() {
|
100
|
+
this.container.innerHTML = '<div class="wysiwyg-color-green"><div class="wysiwyg-color-green"><ul><li></li></ul></blockquote></div></div>';
|
101
|
+
|
102
|
+
var listItem = this.container.querySelector("li"),
|
103
|
+
nestedDiv = this.container.querySelector("div").querySelector("div"),
|
104
|
+
result;
|
105
|
+
|
106
|
+
result = wysihtml5.dom.getParentElement(listItem, {
|
107
|
+
nodeName: "DIV",
|
108
|
+
className: "wysiwyg-color-green",
|
109
|
+
classRegExp: /wysiwyg-color-[a-z]+/g
|
110
|
+
}, 2);
|
111
|
+
equal(result, null);
|
112
|
+
|
113
|
+
result = wysihtml5.dom.getParentElement(listItem, {
|
114
|
+
nodeName: "DIV",
|
115
|
+
className: "wysiwyg-color-green",
|
116
|
+
classRegExp: /wysiwyg-color-[a-z]+/g
|
117
|
+
}, 3);
|
118
|
+
equal(result, nestedDiv);
|
119
|
+
});
|
120
|
+
|
121
|
+
|
122
|
+
test("Check - no nodeName", function() {
|
123
|
+
this.container.innerHTML = '<div><div class="wysiwyg-text-align-right"><span>foo</span></div></div>';
|
124
|
+
|
125
|
+
var spanElement = this.container.querySelector("span"),
|
126
|
+
alignedDiv = this.container.querySelector("div").querySelector("div"),
|
127
|
+
result;
|
128
|
+
|
129
|
+
result = wysihtml5.dom.getParentElement(spanElement, {
|
130
|
+
className: "wysiwyg-text-align-right",
|
131
|
+
classRegExp: /wysiwyg-text-align-[a-z]+/g
|
132
|
+
});
|
133
|
+
equal(result, alignedDiv);
|
134
|
+
});
|
135
|
+
|
136
|
+
test("Test - with no nodeName", function() {
|
137
|
+
this.container.innerHTML = '<div><div class="wysiwyg-text-align-right"><span>foo</span></div></div>';
|
138
|
+
|
139
|
+
var spanElement = this.container.querySelector("span"),
|
140
|
+
alignedDiv = this.container.querySelector("div").querySelector("div"),
|
141
|
+
result;
|
142
|
+
|
143
|
+
result = wysihtml5.dom.getParentElement(spanElement, {
|
144
|
+
className: "wysiwyg-text-align-right",
|
145
|
+
classRegExp: /wysiwyg-text-align-[a-z]+/g
|
146
|
+
});
|
147
|
+
equal(result, alignedDiv);
|
148
|
+
});
|
149
|
+
|
150
|
+
test("Test - with only a classRegExp", function() {
|
151
|
+
this.container.innerHTML = '<div><div class="wysiwyg-text-align-right"><span>foo</span></div></div>';
|
152
|
+
|
153
|
+
var spanElement = this.container.querySelector("span"),
|
154
|
+
alignedDiv = this.container.querySelector("div").querySelector("div"),
|
155
|
+
result;
|
156
|
+
|
157
|
+
result = wysihtml5.dom.getParentElement(spanElement, {
|
158
|
+
classRegExp: /wysiwyg-text-align-[a-z]+/g
|
159
|
+
});
|
160
|
+
equal(result, alignedDiv);
|
161
|
+
});
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module("wysihtml5.dom.getStyle", {
|
2
|
+
setup: function() {
|
3
|
+
this.container = document.createElement("div");
|
4
|
+
document.body.appendChild(this.container);
|
5
|
+
},
|
6
|
+
|
7
|
+
teardown: function() {
|
8
|
+
this.container.parentNode.removeChild(this.container);
|
9
|
+
}
|
10
|
+
});
|
11
|
+
|
12
|
+
|
13
|
+
test("Basic test", function() {
|
14
|
+
wysihtml5.dom.insertCSS([
|
15
|
+
".test-element-2 { position: absolute }"
|
16
|
+
]).into(document);
|
17
|
+
|
18
|
+
this.container.innerHTML = '<span class="test-element-1" style="float:left;">hello</span>';
|
19
|
+
this.container.innerHTML += '<span class="test-element-2">hello</span>';
|
20
|
+
this.container.innerHTML += '<i></i>';
|
21
|
+
this.container.innerHTML += '<div></div>';
|
22
|
+
|
23
|
+
equal(
|
24
|
+
wysihtml5.dom.getStyle("float").from(this.container.getElementsByTagName("span")[0]),
|
25
|
+
"left"
|
26
|
+
);
|
27
|
+
|
28
|
+
equal(
|
29
|
+
wysihtml5.dom.getStyle("position").from(this.container.getElementsByTagName("span")[1]),
|
30
|
+
"absolute"
|
31
|
+
);
|
32
|
+
|
33
|
+
equal(
|
34
|
+
wysihtml5.dom.getStyle("display").from(this.container.getElementsByTagName("div")[0]),
|
35
|
+
"block"
|
36
|
+
);
|
37
|
+
|
38
|
+
equal(
|
39
|
+
wysihtml5.dom.getStyle("display").from(this.container.getElementsByTagName("i")[0]),
|
40
|
+
"inline"
|
41
|
+
);
|
42
|
+
});
|
43
|
+
|
44
|
+
|
45
|
+
test("Textarea width/height when value causes overflow", function() {
|
46
|
+
var textarea = document.createElement("textarea");
|
47
|
+
textarea.style.width = "500px";
|
48
|
+
textarea.style.height = "200px";
|
49
|
+
textarea.value = Array(500).join("Lorem ipsum dolor foo bar");
|
50
|
+
this.container.appendChild(textarea);
|
51
|
+
|
52
|
+
equal(wysihtml5.dom.getStyle("width") .from(textarea), "500px");
|
53
|
+
equal(wysihtml5.dom.getStyle("height") .from(textarea), "200px");
|
54
|
+
});
|
@@ -0,0 +1,29 @@
|
|
1
|
+
if ("querySelector" in document || wysihtml5.browser.supportsNativeGetElementsByClassName()) {
|
2
|
+
module("wysihtml5.dom.hasElementWithClassName", {
|
3
|
+
teardown: function() {
|
4
|
+
var iframe;
|
5
|
+
while (iframe = document.querySelector("iframe.wysihtml5-sandbox")) {
|
6
|
+
iframe.parentNode.removeChild(iframe);
|
7
|
+
}
|
8
|
+
}
|
9
|
+
});
|
10
|
+
|
11
|
+
|
12
|
+
asyncTest("Basic test", function() {
|
13
|
+
expect(3);
|
14
|
+
|
15
|
+
new wysihtml5.dom.Sandbox(function(sandbox) {
|
16
|
+
var doc = sandbox.getDocument(),
|
17
|
+
tempElement = doc.createElement("i");
|
18
|
+
tempElement.className = "wysiwyg-color-aqua";
|
19
|
+
|
20
|
+
ok(!wysihtml5.dom.hasElementWithClassName(doc, "wysiwyg-color-aqua"));
|
21
|
+
doc.body.appendChild(tempElement);
|
22
|
+
ok(wysihtml5.dom.hasElementWithClassName(doc, "wysiwyg-color-aqua"));
|
23
|
+
tempElement.parentNode.removeChild(tempElement);
|
24
|
+
ok(!wysihtml5.dom.hasElementWithClassName(doc, "wysiwyg-color-aqua"));
|
25
|
+
|
26
|
+
start();
|
27
|
+
}).insertInto(document.body);
|
28
|
+
});
|
29
|
+
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module("wysihtml5.dom.hasElementWithTagName", {
|
2
|
+
teardown: function() {
|
3
|
+
var iframe;
|
4
|
+
while (iframe = document.querySelector("iframe.wysihtml5-sandbox")) {
|
5
|
+
iframe.parentNode.removeChild(iframe);
|
6
|
+
}
|
7
|
+
}
|
8
|
+
});
|
9
|
+
|
10
|
+
|
11
|
+
asyncTest("Basic test", function() {
|
12
|
+
expect(3);
|
13
|
+
|
14
|
+
new wysihtml5.dom.Sandbox(function(sandbox) {
|
15
|
+
var doc = sandbox.getDocument(),
|
16
|
+
tempElement = doc.createElement("i");
|
17
|
+
ok(!wysihtml5.dom.hasElementWithTagName(doc, "I"));
|
18
|
+
doc.body.appendChild(tempElement);
|
19
|
+
ok(wysihtml5.dom.hasElementWithTagName(doc, "I"));
|
20
|
+
tempElement.parentNode.removeChild(tempElement);
|
21
|
+
ok(!wysihtml5.dom.hasElementWithTagName(doc, "I"));
|
22
|
+
|
23
|
+
start();
|
24
|
+
}).insertInto(document.body);
|
25
|
+
});
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module("wysihtml5.dom.insertCSS", {
|
2
|
+
teardown: function() {
|
3
|
+
var iframe;
|
4
|
+
while (iframe = document.querySelector("iframe.wysihtml5-sandbox")) {
|
5
|
+
iframe.parentNode.removeChild(iframe);
|
6
|
+
}
|
7
|
+
}
|
8
|
+
});
|
9
|
+
|
10
|
+
asyncTest("Basic Tests", function() {
|
11
|
+
expect(3);
|
12
|
+
|
13
|
+
new wysihtml5.dom.Sandbox(function(sandbox) {
|
14
|
+
var doc = sandbox.getDocument(),
|
15
|
+
body = doc.body,
|
16
|
+
element = doc.createElement("sub");
|
17
|
+
|
18
|
+
body.appendChild(element);
|
19
|
+
|
20
|
+
wysihtml5.dom.insertCSS([
|
21
|
+
"sub { display: block; text-align: right; }",
|
22
|
+
"body { text-indent: 50px; }"
|
23
|
+
]).into(doc);
|
24
|
+
|
25
|
+
equal(wysihtml5.dom.getStyle("display") .from(element), "block");
|
26
|
+
equal(wysihtml5.dom.getStyle("text-align") .from(element), "right");
|
27
|
+
equal(wysihtml5.dom.getStyle("text-indent").from(element), "50px");
|
28
|
+
|
29
|
+
start();
|
30
|
+
}).insertInto(document.body);
|
31
|
+
});
|
@@ -0,0 +1,83 @@
|
|
1
|
+
module("wysihtml5.dom.observe", {
|
2
|
+
setup: function() {
|
3
|
+
this.container = document.createElement("div");
|
4
|
+
this.element = document.createElement("textarea");
|
5
|
+
this.container.appendChild(this.element);
|
6
|
+
document.body.appendChild(this.container);
|
7
|
+
},
|
8
|
+
|
9
|
+
teardown: function() {
|
10
|
+
this.container.parentNode.removeChild(this.container);
|
11
|
+
|
12
|
+
var iframe;
|
13
|
+
while (iframe = document.querySelector("iframe.wysihtml5-sandbox")) {
|
14
|
+
iframe.parentNode.removeChild(iframe);
|
15
|
+
}
|
16
|
+
}
|
17
|
+
});
|
18
|
+
|
19
|
+
|
20
|
+
test("Basic test", function() {
|
21
|
+
expect(4);
|
22
|
+
|
23
|
+
var element = this.element;
|
24
|
+
|
25
|
+
wysihtml5.dom.observe(element, ["mouseover", "mouseout"], function(event) {
|
26
|
+
ok(true, "'" + event.type + "' correctly fired");
|
27
|
+
});
|
28
|
+
|
29
|
+
wysihtml5.dom.observe(element, "click", function(event) {
|
30
|
+
equal(event.target, element, "event.target or event.srcElement are set");
|
31
|
+
ok(true, "'click' correctly fired");
|
32
|
+
});
|
33
|
+
|
34
|
+
QUnit.triggerEvent(element, "mouseover");
|
35
|
+
QUnit.triggerEvent(element, "mouseout");
|
36
|
+
QUnit.triggerEvent(element, "click");
|
37
|
+
});
|
38
|
+
|
39
|
+
|
40
|
+
test("Test stopPropagation and scope of event handler", function(event) {
|
41
|
+
expect(2);
|
42
|
+
var element = this.element;
|
43
|
+
|
44
|
+
wysihtml5.dom.observe(this.container, "click", function(event) {
|
45
|
+
ok(false, "The event shouldn't have been bubbled!");
|
46
|
+
});
|
47
|
+
|
48
|
+
wysihtml5.dom.observe(this.element, "click", function(event) {
|
49
|
+
event.stopPropagation();
|
50
|
+
equal(this, element, "Event handler bound to correct scope");
|
51
|
+
ok(true, "stopPropagation correctly fired");
|
52
|
+
});
|
53
|
+
|
54
|
+
QUnit.triggerEvent(this.element, "click");
|
55
|
+
});
|
56
|
+
|
57
|
+
test("Test detaching events", function() {
|
58
|
+
expect(0);
|
59
|
+
var eventListener = wysihtml5.dom.observe(this.element, "click", function() {
|
60
|
+
ok(false, "This should not be triggered");
|
61
|
+
});
|
62
|
+
|
63
|
+
eventListener.stop();
|
64
|
+
QUnit.triggerEvent(this.element, "click");
|
65
|
+
});
|
66
|
+
|
67
|
+
asyncTest("Advanced test observing within a sandboxed iframe", function() {
|
68
|
+
expect(2);
|
69
|
+
|
70
|
+
var sandbox = new wysihtml5.dom.Sandbox(function() {
|
71
|
+
var element = sandbox.getDocument().createElement("div");
|
72
|
+
sandbox.getDocument().body.appendChild(element);
|
73
|
+
wysihtml5.dom.observe(element, ["click", "mousedown"], function(event) {
|
74
|
+
ok(true, "'" + event.type + "' correctly fired");
|
75
|
+
});
|
76
|
+
QUnit.triggerEvent(element, "click");
|
77
|
+
QUnit.triggerEvent(element, "mousedown");
|
78
|
+
|
79
|
+
start();
|
80
|
+
});
|
81
|
+
|
82
|
+
sandbox.insertInto(document.body);
|
83
|
+
});
|