我遇到了一个问题,如果我重复它,我只能触发我的代码。请参见下面的示例。虽然如果我取出两个脚本中的任何一个,代码几乎相同,但代码不能只使用一个,但如果我同时运行两个脚本,脚本会正常触发,但只有一个而不是两个。试一试。
这有效(但只有一个脚本触发):
<script type="text/javascript">
var url = window.location.href + "";
document.write('<script type="application/javascript" src="https://testdomain.com/mik21?add=2140535&mik21=' + url + '"/>');
</script>
<script type="text/javascript">
var url = window.location.href + "";
document.write('<script type="application/javascript" src="https://testdomain.com/mik?add=2140535&mik=' + url + '"/>');
</script>
这不起作用:
<script type="text/javascript">
var url = window.location.href + "";
document.write('<script type="application/javascript" src="https://testdomain.com/mik21?add=2140535&mik21=' + url + '"/>');
</script>
或者这个:
<script type="text/javascript">
var url = window.location.href + "";
document.write('<script type="application/javascript" src="https://testdomain.com/mik?add=2140535&mik=' + url + '"/>');
</script>
有人有什么想法吗?这绝对是我最近看到的最奇怪的事情。
谢谢,
最佳答案
问题是你的脚本标签坏了。 <script>
标签必须由 </script>
关闭.
现在发生了什么:
示例 1
<script>
document.write('<script src="test.js"/>');
</script>
生成以下标记 HTML:
<script>
document.write('<script src="test.js"/>');
</script>
<script src="test.js">
</body>
</html>
一般来说,浏览器不会执行 <script>
阻止直到他们找到相应的 </script>
.上面的示例中没有明确的结束标记,因此浏览器会忽略该标记。
示例 2
<script>
document.write('<script src="test.js"/>');
</script>
This HTML will be consumed
<script>
document.write('<script src="test.js"/>');
</script>
产生以下输出:
<script>
document.write('<script src="test.js"/>');
</script>
<script src="test.js">
This HTML will be consumed
<script>
document.write('<script src="test.js"/>');
</script>
注意动态写的script标签没有关闭。浏览器会将此标记与第二个 </script>
匹配在标记中;中间的所有内容(错误地)都成为此标记的一部分。
解决方案
使用 document.write 时,确保关闭 <script>
正确标记。但请注意,您不能使用 </script>
JavaScript 代码中的原样,因为它表示脚本 block 结束。您可以使用以下技巧:
<script>
document.write('<script src="test.js"><\/script>');
</script>
关于javascript - 为什么我的 javascript 只在重复代码时触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31203130/