Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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 将样式和脚本标记添加到正文是否可以接受?_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 将样式和脚本标记添加到正文是否可以接受?

Javascript 将样式和脚本标记添加到正文是否可以接受?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我正在创建一个重AJAX的web应用程序,我很好奇人们对在HTML文档主体中添加样式和脚本标记的想法 我一直在使用jquery.load()方法动态插入内容。可以加载到body元素中的部分HTML页面示例如下: <script type="text/javascript"> $(function() { // All required java script for the control goes here... }); </script>

我正在创建一个重AJAX的web应用程序,我很好奇人们对在HTML文档主体中添加样式和脚本标记的想法

我一直在使用jquery.load()方法动态插入内容。可以加载到body元素中的部分HTML页面示例如下:

<script type="text/javascript">
    $(function() {
        // All required java script for the control goes here...
    });
</script>

<style type="text/css">
    /* All required styles for the inserted HTML go here */
</style>

<div id="some-control">
    <!-- Required HTML markup is here. -->
</div>

$(函数(){
//控件所需的所有java脚本都在这里。。。
});
/*插入的HTML所需的所有样式都转到此处*/

由于这个HTML被加载到一个DIV中,我们最终得到的脚本和样式标记不是在HTML文档的头部,而是在HTML文档的主体中。我不确定这是否是有效的HTML?这是开发支持AJAX的web应用程序的常用方法吗?有什么缺点我应该注意吗?

就Javascript而言,您可以将它放在页面上的任何位置,前提是它将处理的元素在加载之前已加载,并且不会抛出错误
未定义的
元素。甚至谷歌(就搜索引擎优化而言)也建议将javascript放在页面末尾的
标记之前


如果您能设法将脚本放在标签前面,这被认为是一个很好的方法,否则,如果一切正常,你现在所做的应该是好的。

我不同意萨夫拉兹的观点,并说你应该尽可能避免在你的页面正文中使用
标记。将JS移动到外部文件的好处是无穷的。最明显的例子包括:

  • 利用浏览器缓存——如果您只在身体中编写代码,那么每个页面都需要加载额外的千字节数据。如果它是一个通用函数,那么就浪费了宝贵的加载时间。如果它位于外部文件中,大多数现代浏览器都会缓存该文件,并且只会频繁地请求新版本。这也减少了服务器负载(减少了请求)
  • 此外,如果您在多个页面上使用类似的脚本,那么如果您需要进行更改,会发生什么情况:(.现在您正在四处搜索
    标记的每个实例以进行更改。将所有代码集中放置并通用允许进行一次更改并完成
  • 版本控制——如果您使用版本控制(GIT、SVN等),那么跟踪和恢复一个文件(如果您犯了错误或意外丢失了代码)要比跟踪和恢复所有文件容易得多
  • CSS也有类似的情况。同样,缓存和集中存储以及可重用性。然而,更重要的是,网站上的样式要匹配。从UI的角度来看,您不希望字体在页面之间发生变化,也不希望每次添加新样式时都要编辑40页

    由于您使用的是AJAX加载内容,因此在文档中包含JS,我建议您研究
    .bind
    .live
    。它们允许您将处理程序附加到DOMObject的现有和未来实例。例如:

    $('.class').live('click', function(){
      alert('I was clicked!');
    });
    
    这将应用于页面加载时存在的任何对象以及以后创建的对象。以下代码不会-它仅适用于加载时创建的对象:

    $('.class').click(function(){
      alert('I was clicked!');
    });
    

    当我看到大型网站内容管理系统通常会将一些元素(部分,而不是全部)放在与依赖于这些类的内容相近的位置时,我得出的结论是,这匹马已经出了谷仓

    去看看cnn.com、nytimes.com、huffingtonpost.com、离你最近的大城市报纸等的页面来源,他们都是这样做的

    如果有很好的理由在身体的某个地方放一个额外的部分——例如,如果你是include()实时集成各种独立的页面元素,每个元素都有自己的嵌入式元素,这样组织将更干净、更模块化、更易于理解和维护——我说只管咬紧牙关。当然,如果我们可以使用“本地”会更好使用受限范围的样式,如局部变量,但您可以使用您拥有的HTML,而不是您以后可能想要或希望拥有的HTML


    当然,也有潜在的缺点和好处(如果不总是令人信服的话)正如其他人所阐述的那样,遵循正统的理由。但对我来说,它看起来越来越像是对in的深思熟虑的使用已经成为主流。

    在身体中…当然。CSS在身体中…我会避免它,没有其他原因,只是它不属于那里。如果我有一个不是全局性的,并且只与HTML相关的CSS呢在文件中?我想我试图避免的是在标题中有大量的标记,而大多数时候CSS只被某些“控件”使用他不是说在html正文中编码脚本标记。他的脚本已经在一个单独的文件中。他说的是通过AJAX加载html+脚本。他的问题是,在正文中而不是在头部中合法吗?标准说是。我没有说它不是有效的XHTML或任何东西,我是说它是b广告要求他将脚本代码放在一个单独的文件中加载。他没有一个全局的.js文件,上面给出了他的例子…所有使用的全局函数/对象都在单独的.js文件中。但是,特定于某个HTML块的代码我们放在与HTML相同的文件中。例如,我们有一个包含js的员工表单验证并使用AJAX提交,该js代码与HTML一起插入,以便仅在需要时加载。您仍应在外部js文档中使用该代码。为表单提供一个ID,并编写一个绑定它的jQuery函数$('#ID')。validation()此外,我必须说,您还应该为验证准备好服务器逻辑,因为javascript验证很容易被绕过。。。