javascript - 为什么我的 javascript 只在重复代码时触发?

标签 javascript html

我遇到了一个问题,如果我重复它,我只能触发我的代码。请参见下面的示例。虽然如果我取出两个脚本中的任何一个,代码几乎相同,但代码不能只使用一个,但如果我同时运行两个脚本,脚本会正常触发,但只有一个而不是两个。试一试。

这有效(但只有一个脚本触发):

<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/

相关文章:

javascript - 如何获取页面中使用的所有外部或内部CSS?

java - 使用 selenium WebDriver 在网页中执行 javascript

javascript - TreeWalker 显示不可见节点

javascript - 语法错误在哪里

javascript - Next.js getInitialProps cookies

jquery - 顺序 addClass 循环 (jQuery)

html - 以页面为中心的 div 的安全内容

javascript - Vertx 事件总线 access_denied

javascript - 我如何检查这些双重正则表达式

javascript - 从 Swift 更新 Javascript 值