How do I tell if an html string contains content and not just tags





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







0















How do I tell if an html string contains content (text, images, video tags, etc) and not just tags (for instance, an empty table, empty divs, spaces, nbsp etc)



I need to be able to do this in javascript, in the browser, and it needs to support IE8. I've come to the conclusion that parsing the html is the best way to go about this. If there is another way that could work I would be interested in that as well. Regex is not acceptable.



Critically, I need this to not run javascript while it is checking. Things like <script>alert(1)</script> and <img src=x onerror=alert(1)/> should not alert. This has been the major stopping point for IE8. IE9 has document.implementation.createHTMLDocument, IE 10 and later have DOMParser for html, neither of which will run JS, but I cant find a solution for IE8.



I think the best thing to find would be a javascript based html parser, but all of the ones I have looked at are for Node or do not support IE8.










share|improve this question































    0















    How do I tell if an html string contains content (text, images, video tags, etc) and not just tags (for instance, an empty table, empty divs, spaces, nbsp etc)



    I need to be able to do this in javascript, in the browser, and it needs to support IE8. I've come to the conclusion that parsing the html is the best way to go about this. If there is another way that could work I would be interested in that as well. Regex is not acceptable.



    Critically, I need this to not run javascript while it is checking. Things like <script>alert(1)</script> and <img src=x onerror=alert(1)/> should not alert. This has been the major stopping point for IE8. IE9 has document.implementation.createHTMLDocument, IE 10 and later have DOMParser for html, neither of which will run JS, but I cant find a solution for IE8.



    I think the best thing to find would be a javascript based html parser, but all of the ones I have looked at are for Node or do not support IE8.










    share|improve this question



























      0












      0








      0








      How do I tell if an html string contains content (text, images, video tags, etc) and not just tags (for instance, an empty table, empty divs, spaces, nbsp etc)



      I need to be able to do this in javascript, in the browser, and it needs to support IE8. I've come to the conclusion that parsing the html is the best way to go about this. If there is another way that could work I would be interested in that as well. Regex is not acceptable.



      Critically, I need this to not run javascript while it is checking. Things like <script>alert(1)</script> and <img src=x onerror=alert(1)/> should not alert. This has been the major stopping point for IE8. IE9 has document.implementation.createHTMLDocument, IE 10 and later have DOMParser for html, neither of which will run JS, but I cant find a solution for IE8.



      I think the best thing to find would be a javascript based html parser, but all of the ones I have looked at are for Node or do not support IE8.










      share|improve this question
















      How do I tell if an html string contains content (text, images, video tags, etc) and not just tags (for instance, an empty table, empty divs, spaces, nbsp etc)



      I need to be able to do this in javascript, in the browser, and it needs to support IE8. I've come to the conclusion that parsing the html is the best way to go about this. If there is another way that could work I would be interested in that as well. Regex is not acceptable.



      Critically, I need this to not run javascript while it is checking. Things like <script>alert(1)</script> and <img src=x onerror=alert(1)/> should not alert. This has been the major stopping point for IE8. IE9 has document.implementation.createHTMLDocument, IE 10 and later have DOMParser for html, neither of which will run JS, but I cant find a solution for IE8.



      I think the best thing to find would be a javascript based html parser, but all of the ones I have looked at are for Node or do not support IE8.







      javascript internet-explorer-8 html-parsing






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 22 '18 at 13:14







      Patrick

















      asked Nov 22 '18 at 13:10









      PatrickPatrick

      3971418




      3971418
























          1 Answer
          1






          active

          oldest

          votes


















          1














          You can use this to parse html string in IE8:



          var xmlDocument = new ActiveXObject('Microsoft.XMLDOM');
          xmlDocument.async = false;
          xmlDocument.loadXML(str);


          to detect IE version use this function:



          function getInternetExplorerVersion()
          // Returns the version of Windows Internet Explorer or a -1
          // (indicating the use of another browser).
          {
          var rv = -1; // Return value assumes failure.
          if (navigator.appName == 'Microsoft Internet Explorer')
          {
          var ua = navigator.userAgent;
          var re = new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");
          if (re.exec(ua) != null)
          rv = parseFloat( RegExp.$1 );
          }
          return rv;
          }


          and usage:



          var ver = getInternetExplorerVersion();
          if ( ver> -1 )
          {
          if (ver = 8.0 )
          {
          var xmlDocument = new ActiveXObject('Microsoft.XMLDOM');
          xmlDocument.async = false;
          xmlDocument.loadXML(str);
          }
          }





          share|improve this answer


























          • ah, forgot to mention I've considered this, and our clients that are still running IE8 will have it locked down such that activeX objects will most likely not be allowed. That and we cannot assume that the html we get is going to be valid xml.

            – Patrick
            Nov 22 '18 at 13:20











          • Well, In that case, you will have to consider either allowing Per-Site ActiveX Controls or considering not supporting IE8. If these are not optional you'll need to create some sort of generic string parser but I wouldn't go that way.

            – Alon Adler
            Nov 22 '18 at 13:56














          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53431770%2fhow-do-i-tell-if-an-html-string-contains-content-and-not-just-tags%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          1














          You can use this to parse html string in IE8:



          var xmlDocument = new ActiveXObject('Microsoft.XMLDOM');
          xmlDocument.async = false;
          xmlDocument.loadXML(str);


          to detect IE version use this function:



          function getInternetExplorerVersion()
          // Returns the version of Windows Internet Explorer or a -1
          // (indicating the use of another browser).
          {
          var rv = -1; // Return value assumes failure.
          if (navigator.appName == 'Microsoft Internet Explorer')
          {
          var ua = navigator.userAgent;
          var re = new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");
          if (re.exec(ua) != null)
          rv = parseFloat( RegExp.$1 );
          }
          return rv;
          }


          and usage:



          var ver = getInternetExplorerVersion();
          if ( ver> -1 )
          {
          if (ver = 8.0 )
          {
          var xmlDocument = new ActiveXObject('Microsoft.XMLDOM');
          xmlDocument.async = false;
          xmlDocument.loadXML(str);
          }
          }





          share|improve this answer


























          • ah, forgot to mention I've considered this, and our clients that are still running IE8 will have it locked down such that activeX objects will most likely not be allowed. That and we cannot assume that the html we get is going to be valid xml.

            – Patrick
            Nov 22 '18 at 13:20











          • Well, In that case, you will have to consider either allowing Per-Site ActiveX Controls or considering not supporting IE8. If these are not optional you'll need to create some sort of generic string parser but I wouldn't go that way.

            – Alon Adler
            Nov 22 '18 at 13:56


















          1














          You can use this to parse html string in IE8:



          var xmlDocument = new ActiveXObject('Microsoft.XMLDOM');
          xmlDocument.async = false;
          xmlDocument.loadXML(str);


          to detect IE version use this function:



          function getInternetExplorerVersion()
          // Returns the version of Windows Internet Explorer or a -1
          // (indicating the use of another browser).
          {
          var rv = -1; // Return value assumes failure.
          if (navigator.appName == 'Microsoft Internet Explorer')
          {
          var ua = navigator.userAgent;
          var re = new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");
          if (re.exec(ua) != null)
          rv = parseFloat( RegExp.$1 );
          }
          return rv;
          }


          and usage:



          var ver = getInternetExplorerVersion();
          if ( ver> -1 )
          {
          if (ver = 8.0 )
          {
          var xmlDocument = new ActiveXObject('Microsoft.XMLDOM');
          xmlDocument.async = false;
          xmlDocument.loadXML(str);
          }
          }





          share|improve this answer


























          • ah, forgot to mention I've considered this, and our clients that are still running IE8 will have it locked down such that activeX objects will most likely not be allowed. That and we cannot assume that the html we get is going to be valid xml.

            – Patrick
            Nov 22 '18 at 13:20











          • Well, In that case, you will have to consider either allowing Per-Site ActiveX Controls or considering not supporting IE8. If these are not optional you'll need to create some sort of generic string parser but I wouldn't go that way.

            – Alon Adler
            Nov 22 '18 at 13:56
















          1












          1








          1







          You can use this to parse html string in IE8:



          var xmlDocument = new ActiveXObject('Microsoft.XMLDOM');
          xmlDocument.async = false;
          xmlDocument.loadXML(str);


          to detect IE version use this function:



          function getInternetExplorerVersion()
          // Returns the version of Windows Internet Explorer or a -1
          // (indicating the use of another browser).
          {
          var rv = -1; // Return value assumes failure.
          if (navigator.appName == 'Microsoft Internet Explorer')
          {
          var ua = navigator.userAgent;
          var re = new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");
          if (re.exec(ua) != null)
          rv = parseFloat( RegExp.$1 );
          }
          return rv;
          }


          and usage:



          var ver = getInternetExplorerVersion();
          if ( ver> -1 )
          {
          if (ver = 8.0 )
          {
          var xmlDocument = new ActiveXObject('Microsoft.XMLDOM');
          xmlDocument.async = false;
          xmlDocument.loadXML(str);
          }
          }





          share|improve this answer















          You can use this to parse html string in IE8:



          var xmlDocument = new ActiveXObject('Microsoft.XMLDOM');
          xmlDocument.async = false;
          xmlDocument.loadXML(str);


          to detect IE version use this function:



          function getInternetExplorerVersion()
          // Returns the version of Windows Internet Explorer or a -1
          // (indicating the use of another browser).
          {
          var rv = -1; // Return value assumes failure.
          if (navigator.appName == 'Microsoft Internet Explorer')
          {
          var ua = navigator.userAgent;
          var re = new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");
          if (re.exec(ua) != null)
          rv = parseFloat( RegExp.$1 );
          }
          return rv;
          }


          and usage:



          var ver = getInternetExplorerVersion();
          if ( ver> -1 )
          {
          if (ver = 8.0 )
          {
          var xmlDocument = new ActiveXObject('Microsoft.XMLDOM');
          xmlDocument.async = false;
          xmlDocument.loadXML(str);
          }
          }






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 22 '18 at 13:20

























          answered Nov 22 '18 at 13:14









          Alon AdlerAlon Adler

          2,72542440




          2,72542440













          • ah, forgot to mention I've considered this, and our clients that are still running IE8 will have it locked down such that activeX objects will most likely not be allowed. That and we cannot assume that the html we get is going to be valid xml.

            – Patrick
            Nov 22 '18 at 13:20











          • Well, In that case, you will have to consider either allowing Per-Site ActiveX Controls or considering not supporting IE8. If these are not optional you'll need to create some sort of generic string parser but I wouldn't go that way.

            – Alon Adler
            Nov 22 '18 at 13:56





















          • ah, forgot to mention I've considered this, and our clients that are still running IE8 will have it locked down such that activeX objects will most likely not be allowed. That and we cannot assume that the html we get is going to be valid xml.

            – Patrick
            Nov 22 '18 at 13:20











          • Well, In that case, you will have to consider either allowing Per-Site ActiveX Controls or considering not supporting IE8. If these are not optional you'll need to create some sort of generic string parser but I wouldn't go that way.

            – Alon Adler
            Nov 22 '18 at 13:56



















          ah, forgot to mention I've considered this, and our clients that are still running IE8 will have it locked down such that activeX objects will most likely not be allowed. That and we cannot assume that the html we get is going to be valid xml.

          – Patrick
          Nov 22 '18 at 13:20





          ah, forgot to mention I've considered this, and our clients that are still running IE8 will have it locked down such that activeX objects will most likely not be allowed. That and we cannot assume that the html we get is going to be valid xml.

          – Patrick
          Nov 22 '18 at 13:20













          Well, In that case, you will have to consider either allowing Per-Site ActiveX Controls or considering not supporting IE8. If these are not optional you'll need to create some sort of generic string parser but I wouldn't go that way.

          – Alon Adler
          Nov 22 '18 at 13:56







          Well, In that case, you will have to consider either allowing Per-Site ActiveX Controls or considering not supporting IE8. If these are not optional you'll need to create some sort of generic string parser but I wouldn't go that way.

          – Alon Adler
          Nov 22 '18 at 13:56






















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53431770%2fhow-do-i-tell-if-an-html-string-contains-content-and-not-just-tags%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Guess what letter conforming each word

          Port of Spain

          Run scheduled task as local user group (not BUILTIN)