javascript - Uncaught SyntaxError: "" string literal contains an unescaped line break?
问题描述:
我自己写了个在线html,css,js工具:
html结构部分
<div class="html"> <textarea id="html" name="" cols="30" rows="10"> </textarea> </div> <div class="css"> <textarea id="css" name="" cols="30" rows="10"></textarea> </div> <div class="css"> <textarea id="js" name="" cols="30" rows="10"></textarea> </div> <div class="button"><button id="button">显示效果</button></div> <div class="iframe"> <iframe id="iframe" frameborder="0"> </iframe></div>
css部分
#html{width: 1000px;height: 200px;border:1px solid red;} #css{width: 1000px;height: 200px;border:1px solid red;} #js{width: 1000px;height: 200px;border:1px solid red;} #iframe{width: 1000px;height: 800px;border:1px solid red;}
js部分
<script charset="utf-8" type="text/javascript"> var ele = document.getElementById("button"); ele.addEventListener("click", function(){ var obHtml = document.getElementById("html").value; var obCss = document.getElementById("css").value; var obJs = document.getElementById("js").value; var obIframe = document.getElementById("iframe"); myString = obHtml + '<style type="text/css">' + obCss +'</style>' + '<script charset="utf-8" type="text/javascript">' + obJs + '</script>'; console.log(mString); obIframe.srcdoc = myString; })
console.log(mystring);用来测试的,可以不要。
总是报错
Uncaught SyntaxError: '' literal not terminated before end of script
第32行出错
myString = obHtml + '<style type="text/css">' + obCss +'</style>' + '<script charset="utf-8" type="text/javascript">' + obJs + '</script>';
哪里有错了?
不要 + '<script charset="utf-8" type="text/javascript">' + obJs + '</script>'; 就可以,原因不知道。
第 1 个答案:
iframe里面的js不能直接拼接,script部分必须新生成,下面的代码测试通过。
var ele = document.getElementById("button"); ele.addEventListener("click", function(){ var obHtml = document.getElementById("html").value; var obCss = document.getElementById("css").value; var obJs = document.getElementById("js").value; var obIframe = document.getElementById("iframe"); mystring = obHtml + '<style type="text/css">' + obCss +'</style>' ; obIframe.srcdoc = mystring; var script = document.createElement("script"); script.type = "text/javascript"; script.text = obJs; obIframe.appendChild(script); })
第 2 个答案:
我记得传统的字符串拼接是不能换行的吧
你可以换成es6模板字符串拼接或者这样试试
myString = obHtml + '<style type="text/css">' myString += obCss +'</style>' …
第 3 个答案:
<script> myString = `<script></script>` </script>
因为myString的</script>和<script>标签被解析成了一对,导致最后那个</script>标签无法闭合。
第 4 个答案:
<script> var str = '<script>some text</script>';//浏览器以为这里要关闭script标签 var str = '<script>some text<\/script>';//替代写法 </script>
在html的<script>
标签里编写JS时,如果出现</script>
,会让浏览器以为</script>
是闭合标签,哪怕你写在字符串的引号里。
为了避免这种情况发生,有两种方法,一是避免</script>
整体出现在<script>
标签里,例如用<\/script>
代替,另一种方法是单独写在另一个JS文件里,通过src来引入外部JS。
当前正在使用h5的audio控件来播放音频,发现几个问题无法播放amr格式的音频mac下chrome效果较好,某些情况下windows无法加载音频请问是 ...