OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 function dartPrint(msg) { | 5 function dartPrint(msg) { |
6 window.parent.postMessage(String(msg), "*"); | 6 window.parent.postMessage(String(msg), "*"); |
7 } | 7 } |
8 | 8 |
9 window.onerror = function (message, url, lineNumber) { | 9 window.onerror = function (message, url, lineNumber) { |
10 window.parent.postMessage( | 10 window.parent.postMessage( |
11 ["error", {message: message, url: url, lineNumber: lineNumber}], "*"); | 11 ["error", {message: message, url: url, lineNumber: lineNumber}], "*"); |
12 }; | 12 }; |
13 | 13 |
14 function onMessageReceived(event) { | 14 function onMessageReceived(event) { |
15 var data = event.data; | 15 var data = event.data; |
16 if (data instanceof Array) { | 16 if (data instanceof Array) { |
17 if (data.length == 2 && data[0] == 'source') { | 17 if (data.length == 2 && data[0] == 'source') { |
18 var script = document.createElement('script'); | 18 var script = document.createElement('script'); |
19 script.innerHTML = data[1]; | 19 script.innerHTML = data[1]; |
20 script.type = 'application/javascript'; | 20 script.type = 'application/javascript'; |
21 document.head.appendChild(script); | 21 document.head.appendChild(script); |
22 return; | 22 return; |
23 } | 23 } |
24 } | 24 } |
25 } | 25 } |
26 | 26 |
27 window.addEventListener("message", onMessageReceived, false); | 27 window.addEventListener("message", onMessageReceived, false); |
28 | 28 |
29 (function () { | 29 (function () { |
30 function postScrollHeight() { | 30 function postScrollHeight() { |
31 window.parent.postMessage(["scrollHeight", document.documentElement.scrollHeig
ht], "*"); | 31 window.parent.postMessage( |
32 } | 32 ["scrollHeight", document.documentElement.scrollHeight], "*"); |
| 33 } |
33 | 34 |
34 var observer = new (window.MutationObserver||window.WebKitMutationObserver||wind
ow.MozMutationObserver)(function(mutations) { | 35 var mutationObserverConstructor = |
35 postScrollHeight() | 36 window.MutationObserver || |
36 window.setTimeout(postScrollHeight, 500); | 37 window.WebKitMutationObserver || |
37 }); | 38 window.MozMutationObserver; |
38 | 39 |
39 observer.observe( | 40 var observer = new mutationObserverConstructor(function(mutations) { |
40 document.body, | 41 postScrollHeight() |
41 { attributes: true, | 42 window.setTimeout(postScrollHeight, 500); |
42 childList: true, | 43 }); |
43 characterData: true, | 44 |
44 subtree: true }); | 45 observer.observe( |
| 46 document.body, |
| 47 { attributes: true, |
| 48 childList: true, |
| 49 characterData: true, |
| 50 subtree: true }); |
45 })(); | 51 })(); |
OLD | NEW |