Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I write a <script> tag inside a <script> tag

This is my code. I'm trying to stop running an external js file when screen width is less than 1025.

<script type="text/javascript">
var gdsize = 1025;          
if(window.innerWidth>=gdsize) {

    <script>
    window.cookieconsent_options = {"message":"\"Geek Dashboard uses cookies to make sure you get the best experience on our website.\" -","dismiss":"It's OK","learnMore":"More Details Here","link":"http://www.geekdashboard.com/cookies/","theme":"dark-bottom"};
    }
    </script>


</script>

<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/1.0.9/cookieconsent.min.js"></script>
like image 689
Amar Ilindra Avatar asked Nov 28 '15 09:11

Amar Ilindra


2 Answers

<script type="text/x-jQuery-tmpl">
    var gdsize = 1025;          
    if(window.innerWidth>=gdsize) {

    <script type="text/javascript">
        <!-- Some javascript here -->
        window.cookieconsent_options = {"message":"\"Geek Dashboard uses cookies to make sure you get the best experience on our website.\" -","dismiss":"It's OK","learnMore":"More Details Here","link":"http://www.geekdashboard.com/cookies/","theme":"dark-bottom"};
        }
    {{html "</sc"+"ript>"}}
</script>

You can use {{html "</sc"+"ript>"}} in place of </script>

Explanation [update]:

When you use a </script> HTML tag inside a quoted (literal) string, the tag is treated as a closing tag rather than as a portion of the string. So you cannot directly use the </script> tag inside a script section.

One work-around is to escape the </script> tags and/or split up the <script> tags:

var scriptEnd = "</scr" + "ipt>";
document.write(scriptEnd);
like image 181
Vikrant Avatar answered Oct 13 '22 00:10

Vikrant


Why would you use a nested script to modify an object property?

It can be solved in a much simpler way since you're already "in the script":

<script type="text/javascript">
  var gdsize = 1025;          
  if(window.innerWidth>=gdsize) {

    window.cookieconsent_options = {"message":"\"Geek Dashboard uses cookies to make sure you get the best experience on our website.\" -","dismiss":"It's OK","learnMore":"More Details Here","link":"http://www.geekdashboard.com/cookies/","theme":"dark-bottom"};

  }    
</script>
like image 43
Shomz Avatar answered Oct 13 '22 00:10

Shomz