Javascript 使用JS编写noscript标记

Javascript 使用JS编写noscript标记,javascript,dom,Javascript,Dom,有没有什么实际的理由让你用JavaScript的document.write()写出一个标记?我们的广告部门已经做了很多年了,在我指出这一点之后,我们仍然这样做。我99%确信这是因为一个不知道自己在做什么的人编写了一个古老的广告模板,没有人想过要修改它,因为“为什么要修复未损坏的东西?”或者可能有人错误地阅读了他们的“最佳实践”(“始终为禁用JS的浏览器提供一个替代方案”)。也许有一个很好的理由我不知道 我能想到的唯一一件事是,您可以使用它来修改DOM,而不让它出现在页面上,并且可以像模板一样使

有没有什么实际的理由让你用JavaScript的
document.write()写出一个
标记?我们的广告部门已经做了很多年了,在我指出这一点之后,我们仍然这样做。我99%确信这是因为一个不知道自己在做什么的人编写了一个古老的广告模板,没有人想过要修改它,因为“为什么要修复未损坏的东西?”或者可能有人错误地阅读了他们的“最佳实践”(“始终为禁用JS的浏览器提供一个替代方案”)。也许有一个很好的理由我不知道

我能想到的唯一一件事是,您可以使用它来修改DOM,而不让它出现在页面上,并且可以像模板一样使用该内容供以后使用,但这似乎非常牵强

(编辑)

本例中的标记包含标准的
。因为这是原始的非动态广告标签的样子,这让我觉得这只是复制粘贴的垃圾

我应该说的另一件事是,我不能100%确定这是一个过度站点的原因是因为最近的模式是将html模板放入
。我怀疑我们这边的人会自己想出这个主意,但这可能是一个非常聪明的人的标准广告实践

有没有什么实际的理由可以让你用JavaScript的
document.write()写出一个
标记

没有。这两个(
)是相互排斥的。这就像写一段代码,如下所示:

if (true && false) {
    // do something important
}


如果启用了JavaScript,浏览器将忽略
标记。另一方面,如果禁用JavaScript,将永远不会写入
标记,因为
标记将被忽略。

这用于机器人检测/指纹识别

例如,如果我使用

document.write('<script src='...'>...</script><noscript><img>....</noscript>');
document.write(“…”);
Chrome 55+阻止从
document.write()
写入的不同源脚本。这意味着上述
实际上将在某些/更新版本的chrome上运行,尽管它来自“脚本”


假设的目的是,如果机器人假装(通过欺骗其用户代理)是一个特定版本的chrome,并且脚本没有被阻止,那么它将指向一个事实,即它不是真正的chrome(机器人)。

如何使用Javascript创建标记noscript,如果相同的功能被禁用?标签的内容是什么?请告诉我标签包含一个“警报('Please enable javascript');“这不就像对某人说,“我不会说英语”…用英语?@MarkLinus,也许重点是针对启用了JS的用户。一点都不一样。在您的示例中,
//do some important
从未到达。但是如果我在我们的主页上运行它,
document.getElementsByTagName('noscript').length,我得到“3”。正在更新DOM。它是“正在运行的”。我想你误解了伪代码的类比:
//做一些重要的事情
类似于
标记中的内容。当然,它们是DOM的一部分,因此可以像其他标记一样使用JS进行查询。在DOM中使用它们没有任何意义,因为浏览器在呈现页面时会忽略内容。不,我理解这一点。我同意就HTML呈现引擎而言,
的内容是死内容,但它对DOM来说并不是死的,对JavaScript来说也不是不可读的。正如我的更新所说,我问这个问题的原因是直到最近,我还不知道开发人员使用
标记来交付视图模板(例如)。在我们的例子中,这可能是一个错误,但它实际上可能是一种真正的现代技术。很抱歉,没有早些接受。我希望其他人能给出一个合理的解释。但我想你会同意,可能没有。谢谢你的回复。我在五年前问过这个问题,当时Chrome的版本是18,刚刚达到IE的水平,正如我所说,广告部门已经做了很多年了。现在我不再和这些家伙一起工作了,我想我可以有把握地说,广告部根本不知道他们在做什么,在他们的工作中一直在“崇拜货物”。尽管如此,我非常感谢你的评论。