Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JavaScript嵌入HTML主体中是一种不好的做法吗?_Javascript_Html - Fatal编程技术网

将JavaScript嵌入HTML主体中是一种不好的做法吗?

将JavaScript嵌入HTML主体中是一种不好的做法吗?,javascript,html,Javascript,Html,我正在工作的一个团队已经养成了在HTML页面正文的任意位置使用标记的习惯。例如: <html> <head></head> <body> <div id="some-div"> <script type="text/javascript">//some javascript here</script> </div> <

我正在工作的一个团队已经养成了在HTML页面正文的任意位置使用
标记的习惯。例如:

<html>
    <head></head>
    <body>
        <div id="some-div">
            <script type="text/javascript">//some javascript here</script>
        </div>
    </body>
</html>

//这里有一些javascript
我以前没见过这个。它似乎在我测试过的少数浏览器中都能工作。但据我所知,在这样的地方放置脚本标记是无效的


我错了吗?我们像这样将脚本标记放在div标记中有多糟糕?是否有我应该注意的浏览器兼容性问题?

这当然是合法的;例如,我在几页上看到过

现在,这是一个教程网站,展示了HTML和JavaScript的基础知识,因此在这种情况下,它是完全可以理解的。然而,我不希望在生产代码中看到它,而仅仅是一两条简单的语句。如果没有看到您用
//这里的一些JavaScript代码替换了什么
,我不想发表评论


不过,这不应该有任何浏览器问题。

事实上,这很常见。例如,仅使用以下语法:

<script type="text/javascript">
  var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
  document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>

var gaJsHost=((“https:==document.location.protocol)?”https://ssl." : "http://www.");
write(unescape(“%3Cscript src=”+gaJsHost+“google analytics.com/ga.js”type='text/javascript'%3E%3C/script%3E”);

如果它对Google来说足够好…

它是有效的,并且根据您的服务器端框架和代码的性质,有时很难避免。

但是,它也很好,因为您知道一段HTML所需的JavaScript代码将用于它。而不必在文件顶部断言并建立一些包含

因此,与“如果要使用此HTML,请确保导入xyz.js”不同,您可以只包含HTML并完成它


所以,这不一定是可怕的邪恶。也许不太可怕,但也不完全可怕。这在某种程度上取决于意图。

查看雅虎用户界面以获得最佳实践:(页面底部的JavaScript)

这是完全有效的

您不希望将大量代码块混合在标记中(最好使用外部脚本),但它有助于:

  • 为渐进增强添加额外的绑定信息(数据很难放入类名或其他在属性中隐藏扩展信息的方法);或

  • 需要尽快启动脚本化增强功能(而不是等待窗口加载/文档准备就绪)。自动对焦就是一个例子,如果发射得太晚,会让人恼火

您可能会想到
元素,这些元素在
中是不允许的(尽管大多数浏览器都允许这样做)。

以下几点:

  • 它在代码方面是完全有效的
  • 这完全不值得赞扬
  • 这样做会大大降低页面加载速度,因为JavaScript代码必须在页面其余部分呈现之前执行。如果您在JavaScript代码中做了大量工作,您的浏览器可能会挂起。您应该尝试(尽可能)在页面末尾动态加载JavaScript代码(最好在
    标记之前)


    购买并阅读。它将改变您编写JavaScript代码的方式。

    它完全有效,但可能会损害可维护性。另请参见和。

    它是有效的

    您可以使用:

    <script type="text/javascript">
        //<![CDATA[
    
        // Some JavaScript code that perfectly validates in the W3C validator
    
        //]]>
    </script>
    
    
    //
    

    我不认为你能说这是一个普遍的坏习惯。在这种情况下你必须告诉我。但可以肯定的是,将所有JavaScript代码放在同一个位置是很好的。如果HTML文件中到处都是JavaScript代码,那就有点乱了。

    经常提到的建议是,脚本应该保留在头中,这是为了确保在调用脚本之前加载脚本。这只是某些事件处理程序的问题。对于其他类型的脚本,这并不重要,对于某些类型(如document.write),这没有任何意义。

    我更喜欢将外部脚本的引用放在头部,将启动和初始化小部件的脚本等等放在正文中

    一个很容易遇到的问题是,主体中的脚本元素无法访问其后的元素。另外,一个相关的浏览器兼容性问题是IE不允许脚本元素修改它们所在的元素。所以如果你有这个:

    <div id="foo">
      <script type="text/javascript">
        document.getElementById("foo")... // do something to it
      </script>
    </div>
    
    
    document.getElementById(“foo”)…//做点什么
    
    我不会喜欢你的网页的。旧版本的IE通常会给出非常隐晦的错误消息,甚至整个页面都是空白,但IE8似乎给出了描述性的错误消息


    只要您确保您的脚本只访问安全访问的DOM,我认为将脚本元素放入主体并不是坏事。事实上,IMHO,将初始化小部件的脚本放在相关元素之后比将所有内容放在一个地方可读性更好(我相信这也可能会使它们运行得更早,这会减少页面加载时的内容跳转)。

    这是许多脚本之一,许多最佳实践既与提高性能有关,也与改进编程方法有关


    最终在web开发中,推出产品是最重要的

    正如一些人提到的,它是有效的、有效的,并且被广泛使用

    语义推荐(或至少用于推荐)的最佳实践是将脚本标记放在头的内部

    考虑到性能的更现代的最佳实践建议将脚本标记(外部和内联)放在body标记的右下角,以便在任何JavaScript代码执行之前完全呈现标记

    为了更容易理解和维护代码,“低调的JavaSc