javascript的script标签介绍

相信很多同学都写过html和javascript,而由html转向javascript的第一步都少不了写script这个标签。这么简单的标签为什么还要拿来讲呢,因为它有时候非常的有用:
第一个小栗子:
<!DOCTYPE html>
    <head>
        <script type="text/javascript">document.write("Hello World!")</script>
    </head>
    <body>
    </body>
</html>
这个是w3c上js入门的一个小例子,相信大家都知道运行的结果是会在网页上出现一个Hello World!;那么刨根问底,为什么它会出现一个hello world,想要知道原因,需要先了解下javascript的运行机制。
当我们用浏览器运行包含上面这段html代码的文件的时候,浏览器就会自动解析这个文件里面的代码。文件里面的代码一行行往下执行,当碰到script这个标签的时候,浏览器就会自动运行js解析器来解析下面的这段代码,当碰到</script>这个标签的时候,js解析器停止运行。
那有人可能就想了;<div>这个html是讲<script>标签用法的</div>;把这个div放网页中,这里的<script>要是被js解析器开始执行,那不就尴尬了。确实是存在这样的问题,上面这个运行的结果是<script>标签后面的内容都不显示,在编辑器中还会报错。为了将标签和文本区分开,引入了&lt 和 &gt;上面这段代码可以写成<div>这个html是讲&ltscript&gt标签用法的</div>,也就是html特殊字符的转义。
js解析器在运行js脚本的过程中,碰到 var,function,document等内置的词汇后会执行相应的解析代码,像上面的document.write就会在文档中写入一个hello wrold!。
script标签自身属性:
  • async:可选。表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或等待加载其他脚本。只对外部脚本有效。
  • charset:可选。表示通过src属性指定的代码的字符集。由于大多数浏览器会忽略它的值,因此这个属性很少有人用。
  • defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本有效。
  • language:已废弃。
  • src:可选。表示包含要执行代码的外部文件。
  • type:可选。可以看成是language的替代属性;表示编写代码使用的脚本语言的内容类型(也称为MIME类型)。
最常用的也就是 src属性,也是比较有效的;
最简单的例子:在项目开发中,经常需要引入jquery文件,大多数是这样写的:<script src="./src/ jquery-1.7.2.min.js " />,这个也是比较常见的script的引入方式,这里引入的是相对url。有时候,简单的想试试某个demo,也可以引入某个网站的jquery.min.js文件,这就是第一种方式。
script的src可以引用两种文件:
1)绝对 URL - 指向其他站点(比如 src=" http://code.jquery.com/jquery-1.7.2.min.js ")
2)相对 URL - 指向站点内的文件(比如 src="/src/ jquery-1.7.2.min.js ")
src引入某个js文件其实是将引入的那个js文件里面的内容加载到前的html或js中;利用srcript的src属性可以获取绝大多数网站的数据,而你不用担心跨域问题。看下面一段代码
<!DOCTYPE html>
    <head>
	<meta http-equiv="refresh" content="20">
    </head>
    <body></body>
    <script type="text/javascript" src="http://hq.sinajs.cn/list=sh600365" charset="gb2312"></script>
    <script type="text/javascript">
         var tongpu=hq_str_sh600365.split(",");
         console.log("tongpu", tongpu);
    </script>
</html>
这个是在新浪网获取某只股票的数据,并且每20秒刷新一次页面,script也会从新加载,就能实现获取某只股票的实时价格。这里src可以换成你想要获取数据的任意网站接口,获取到数据后可以进行加工。如果这里<meta http-equiv="refresh" content="20">的content设置一个很小的值,就会频繁的请求一个网站的接口,增加该网站服务器的压力,不过一般网站都会自动屏蔽过于频繁请求的ip,防止这种DOS攻击。当然把接口写在script的src中很多时候是无奈之举。因为利用ajax请求网站更方便可控。下面是之前写的一个ajax请求
$.ajax({
        type: "GET",
        url: "http://hq.sinajs.cn/list=sh600365",
        // data:{},//数据
        async: false,//同步
        dataType: 'application/x-javascript; charset=GBK',
		// jsonp: 'callback',
		// jsonpCallback: 'handleResponse',
        success: function (response, status, xhr) {
            alert(JSON.stringify(response))
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
		console.log("XMLHttpRequest", XMLHttpRequest )
        }
    });
这种写法通常会碰到跨域问题,而这基本都需要修改服务端代码,在请求别人网站这基本是不可能实现的。所以,在这种情况下可以用script的src方法获取数据。
  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值