在你提问之前,我已经在Stack Overflow中搜索了很多内容并且我谷歌了几千次。我见过的任何其他案例都帮助了我。
让我们回答我的问题:
我正在尝试在我的代码中使用以下脚本:
<script type='text/javaScript'>
document.write("<script src='/feeds/posts/default/-/"+hom_cat1+"?max-results=1&orderby=published&alt=json-in-script&callback=showhomeposts1'></script>");
</script>
但是我正在使用Blogger并且它没有正确检测到我的代码(请注意红色脚本结束标记):
有了这个,我无法保存模板。所以我正在尝试使用此website将我的代码转换为HTML实体。当我编码时,将其放入我的模板并保存,我得到:
Uncaught SyntaxError: Unexpected token ILLEGAL
这是我正在尝试使用的编码字符串:
<script type='text/javaScript'>document.write("<script src='/feeds/posts/default/-/"+hom_cat1+"?max-results=1&orderby=published&alt=json-in-script&callback=showhomeposts1'></script>");</script>
答案 0 :(得分:22)
问题是传递给document.write
的字符串包含字符</script>
,最终会过早地终止调用document.write
的脚本元素。
字符</script>
不能出现在脚本中的任何位置,因为HTML解析器无法将其与实际的</script>
标记区分开来。
你可以尝试这样的事情:
document.write("<script src='...'></scr" + "ipt>");
或者,如评论中所述:
document.write("<script src='...'><\/script>");
另一种选择是使用DOM API创建script
元素并将其插入到文档中。这里的其他答案给出了一些建议,但是实现存在潜在的问题(例如,如果您尝试从document.body.appendChild
内调用它,head
将抛出TypeError)。这样的事情会更强大:
(function() {
var s = document.getElementsByTagName('script')[0];
var script = document.createElement('script');
script.src = 'http://something.com';
s.parentNode.insertBefore(script, s);
}());
此外,type='text/javaScript'
不正确;使用text/javascript
或省略type
属性。
答案 1 :(得分:4)
你正在写
<script type='text/javaScript'>
document.write("<script src='/feeds/posts/default/-/"+hom_cat1+"?max-results=1&orderby=published&alt=json-in-script&callback=showhomeposts1'></script>");
</script>
因此输出将是脚本标记内的脚本标记,这就是输出
的原因<script type='text/javaScript'>document.write("<script src='/feeds/posts/default/-/"+hom_cat1+"?max-results=1&orderby=published&alt=json-in-script&callback=showhomeposts1'></script>");</script>
而是只使用document.write(“”);
或强> 的
var script = document.createElement( 'script' );
script.type = 'text/javascript';
script.src = url;
$("#someElement").append( script );
答案 2 :(得分:2)
加载js异步的更好方法就是这样
function loadScript () {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'feeds/posts/default/your.js'
document.body.appendChild(script);
}
window.onload = loadScript;
或者如果您不想要任何功能,可以使用直接调用
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'feeds/posts/default/your.js'
document.body.appendChild(script);
正如google所建议的那样https://developers.google.com/maps/documentation/javascript/tutorial?hl=en#asynch
答案 3 :(得分:0)
如果你在Django上,并遇到类似的问题:试试这个:
<script src="{% static 'my/path/to/script.js' %}" ></script>