mg2connext / connext

6 stars 0 forks source link

Connext hiding error when "selector" is can not be found #34

Open sframe opened 6 years ago

sframe commented 6 years ago

Uncaught TypeError giving us a big headache trying to figure out why a road block was not displaying :(

Connext.min.js:formatted:8981 Uncaught TypeError: Cannot read property 'custom' of undefined
    at a (Connext.min.js:formatted:8981)
    at Connext.min.js:formatted:9011
sframe commented 6 years ago
--- https://cdn.mg2connext.com/prod/CMG/Connext.js
+++ Proposed Changes
@@ -13905,20 +13905,27 @@

             var allowedCharactersCount = action.What.PrevChars;
             var currentCharacterPosition = 0;
-            var parent = $(CONTENT_SELECTOR)[0];
-            var $originalContent = $(CONTENT_SELECTOR).clone();
-            $originalContent.find(".Mg2-connext[data-display-type=inline]").remove();
-            $originalContent.find(".Mg2-connext[data-display-type=info-box]").remove();
-            $originalContent.find(".Mg2-connext[data-display-type=banner]").remove();
-            ORIGINAL_CONTENT = $originalContent[0].innerHTML;
-            var childs = parent.childNodes;
-            if (MASKING_METHOD) {
-                calculateTagText(parent, childs);
-            }
-            //for flittz
-            $(".flittz").removeClass("blurry-text");
-            $(".flittz").removeClass("trimmed-text");
-            $(".trimmed-text").remove();
+
+            var $selector = $(CONTENT_SELECTOR);
+            if ($selector.length > 0) {
+              var parent = $selector[0];
+              var parent = $(CONTENT_SELECTOR)[0];
+              var $originalContent = $(CONTENT_SELECTOR).clone();
+              $originalContent.find(".Mg2-connext[data-display-type=inline]").remove();
+              $originalContent.find(".Mg2-connext[data-display-type=info-box]").remove();
+              $originalContent.find(".Mg2-connext[data-display-type=banner]").remove();
+              ORIGINAL_CONTENT = $originalContent[0].innerHTML;
+              var childs = parent.childNodes;
+              if (MASKING_METHOD) {
+                  calculateTagText(parent, childs);
+              }
+              //for flittz
+              $(".flittz").removeClass("blurry-text");
+              $(".flittz").removeClass("trimmed-text");
+              $(".trimmed-text").remove();              
+            } else {
+              CnnXt.Logger.debug(NAME, fnName, 'Missing selector: ' + CONTENT_SELECTOR);
+            }

             function calculateTagText(parent, childs) {
                 for (var i = 0; i < childs.length; i++) {
sframe commented 6 years ago

Can we make this bit $(CONTENT_SELECTOR)[0] safer? There is no guarantee that a given page will always have the selector that is being targeted.

Would be nice to have the paywall still show up – even if the content doesn't get "blurred"