Browse Source

Merge pull request #40 from calvinkei/master

Add: DOM change detection
iou90 6 years ago
parent
commit
77a02cfa10
No account linked to committer's email address
2 changed files with 34 additions and 6 deletions
  1. 19
    3
      autoHeightWebView/index.android.js
  2. 15
    3
      autoHeightWebView/index.ios.js

+ 19
- 3
autoHeightWebView/index.android.js View File

23
 const RCTAutoHeightWebView = requireNativeComponent(
23
 const RCTAutoHeightWebView = requireNativeComponent(
24
   "RCTAutoHeightWebView",
24
   "RCTAutoHeightWebView",
25
   AutoHeightWebView,
25
   AutoHeightWebView,
26
-  { nativeOnly: 
26
+  { nativeOnly:
27
     {
27
     {
28
       nativeOnly: {
28
       nativeOnly: {
29
         onLoadingStart: true,
29
         onLoadingStart: true,
343
         AutoHeightWebView.onMessage = function (message) {
343
         AutoHeightWebView.onMessage = function (message) {
344
             AutoHeightWebView.send(String(document.body.offsetHeight));
344
             AutoHeightWebView.send(String(document.body.offsetHeight));
345
         };
345
         };
346
-    } ()); 
346
+        MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
347
+        var observer = new MutationObserver(function() {
348
+            AutoHeightWebView.send(String(document.body.offsetHeight));
349
+        });
350
+        observer.observe(document, {
351
+            subtree: true,
352
+            attributes: true
353
+        });
354
+    } ());
347
     `
355
     `
348
   : `
356
   : `
349
     ; (function () {
357
     ; (function () {
350
         document.addEventListener('message', function (e) {
358
         document.addEventListener('message', function (e) {
351
             window.postMessage(String(document.body.offsetHeight));
359
             window.postMessage(String(document.body.offsetHeight));
352
         });
360
         });
353
-    } ()); 
361
+        MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
362
+        var observer = new MutationObserver(function() {
363
+            window.postMessage(String(document.body.offsetHeight));
364
+        });
365
+        observer.observe(document, {
366
+            subtree: true,
367
+            attributes: true
368
+        });
369
+    } ());
354
     `;
370
     `;

+ 15
- 3
autoHeightWebView/index.ios.js View File

175
 
175
 
176
 const BaseScript =
176
 const BaseScript =
177
     `
177
     `
178
-    ; 
178
+    ;
179
     (function () {
179
     (function () {
180
         var i = 0;
180
         var i = 0;
181
         var height = 0;
181
         var height = 0;
195
         updateHeight();
195
         updateHeight();
196
         window.addEventListener('load', updateHeight);
196
         window.addEventListener('load', updateHeight);
197
         window.addEventListener('resize', updateHeight);
197
         window.addEventListener('resize', updateHeight);
198
+        MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
199
+        var observer = new MutationObserver(updateHeight);
200
+        observer.observe(document, {
201
+            subtree: true,
202
+            attributes: true
203
+        });
198
     } ());
204
     } ());
199
     `;
205
     `;
200
 
206
 
201
 const IframeBaseScript =
207
 const IframeBaseScript =
202
     `
208
     `
203
-    ; 
209
+    ;
204
     (function () {
210
     (function () {
205
         var i = 0;
211
         var i = 0;
206
         var height = 0;
212
         var height = 0;
214
         updateHeight();
220
         updateHeight();
215
         window.addEventListener('load', updateHeight);
221
         window.addEventListener('load', updateHeight);
216
         window.addEventListener('resize', updateHeight);
222
         window.addEventListener('resize', updateHeight);
223
+        MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
224
+        var observer = new MutationObserver(updateHeight);
225
+        observer.observe(document, {
226
+            subtree: true,
227
+            attributes: true
228
+        });
217
     } ());
229
     } ());
218
-    `;
230
+    `;