三种方法动态加载Js文件

碰到需要加载多个Js文件的情况,使用选择性的动态加载Js
,可以提高页面显示的速度和效率。

下面介绍三种异步执行加载Js
脚本的方法。

1、直接document.write

<script language="javascript">

    document.write("<script src='test.js'><\/script>");

</script>

2、动态改变已有script的src 属性

<script src='' id="s1"></script>

<script language="javascript">

    s1.src="test.js"

</script>

3、动态创建 script元素

<script>

    var oHead = document.getElementsByTagName('HEAD').item(0);

    var oScript= document.createElement("script");

    oScript.type = "text/javascript";

    oScript.src="test.js";

    oHead.appendChild( oScript);

</script>


这三种方法都是异步的,所以在采用这类方法动态加载Js
的同时,主界面的Js脚本是继续执行的,所以可能出现通过异步加载的Js代码得不到预期的效果的情况。这时候可以考虑采用Ajax加载Js的方法。

大概原理
:用XMLHTTP取得要脚本的内容,再创建 Script 对象。另外注意编码的保持一致。因为服务器与XML使用UTF8编码传送数据。

Js - 动态创建Iframe{兼容IE/Firefox/...}

这个主要是在做Ajax无刷新上传的时候用了。

其实也可以直接写Iframe在Html上,但考虑到会不简洁,怕误删等其他操作造成错误,就用这个动态创建的。

狗狗了一下找到下面一段代码:

var objBody = document.getElementsByTagName("body").item(0);
var iframe = document.createElement('iframe');
iframe.id = 'fileUploaderEmptyHole';
iframe.name = 'fileUploaderEmptyHole';
iframe.width = 0;
iframe.height = 0;
iframe.marginHeight = 0;
iframe.marginWidth = 0;
objBody.insertBefore(iframe, objBody.firstChild);

这段代码在Firefox运行正常,但在Ie下不行。会在新弹出的窗口中打开。

调试了一下,发现在IE里是iframe.name = 'fileUploaderEmptyHole';
这行代码无效。

再次更改代码,使用

iframe = document.createElement('<iframe name="fileUploaderEmptyHole">');

这样的形式。但是这样子在非IE的浏览器里会抛出异常。

所以。。 那么。。  捕获异常判断浏览器

最后再处理的兼容Firefox/IE等浏览器的动态创建一个Iframe的Js代码
如下:

var iframe;
try {
  iframe = document.createElement('<iframe name="fileUploaderEmptyHole">');
} catch (ex) {
  iframe = document.createElement('iframe');
}
iframe.id = 'fileUploaderEmptyHole';
iframe.name = 'fileUploaderEmptyHole';
iframe.width = 0;
iframe.height = 0;
iframe.marginHeight = 0;
iframe.marginWidth = 0;

域名解析,A记录,MX记录,CNAME记录,url转发,frame转发,ns记录,动态域名解析

再次整理一下关于搞空间、域名要了解的一些必备知识

 

什么是域名解析:

域名解析就是域名到IP地址的转换过程。IP地址网路上标识您站点的数字地址,为了简单好 记,采用域名来代替IP地址标识站点地址域名的解析工作由DNS服务器完成。

 

什么是A记录(IP指向):

用来指定域名对应的IP地址记录用户可以将该域名解析到自己的webserver上。同时也可以设置域名的二级域名
说明用户可以将该域名下 的网站服务器指向到自己的web server上。同时也可以设置自己域名的二级域名。 
就是说:通过A记录,大家可以设置自 己的不同域名转到不同的IP上去!如: 
www.yourname.com 转到IP 321.32.321.321 
ftp.yourname.com 转 到IP 123.12.123.123 
mail.yourname.com 转到IP 213.21.213.213 

 

什么是cname记录(别名指向):

相当于用子域名来代替ip地址,优点是如果ip地址变化,只需要改动子域名 的解析,而不需要逐一改变ip地址解析。可以将注册的不同域名统统转到一个主域名上去!与A记录不同的是,CNAME别名记录设置的可以是一个域名的描述而不一定是IP地 址! 

 

什么是URL(转发):

访问您的域名时,将会自动跳转到您所指定的另一个网络地址(URL),此时在浏览器地址 栏显示的是你跳转的地址功能:如果您没有一台 独立的服务器(也就是没有一个独立的IP地址)或者您还有一个域名B,您想访问A域名时访问到B域名内容,这时您就可以通过URL转发来实现。 
url 转发可以转发到某一个目录下,甚至某一个文件上。而cname是不可以,这就是url转发和cname的主要区别所在。 

 

什么是frame(隐藏转发):

访问您的域名时,将会自动跳转到您所指定的另一个网络地址(URL),此时在浏 览器地址栏" title="地址栏">地址栏显示的是你原域名地址

 

什么是mail记录

它指向一个邮件服务器,用于电子邮件系统邮件时根据 收信人的地址后缀定位邮件服务器

 

什么是MX记录邮件路由记录  :

它指向一个邮件服务器,用于电子邮件系统邮件时根据 收信人的地址后缀定位邮件服务器
说明用户可以将该域名下的邮件服务器指向到自己的mail server 上,然后即可自行操作控制所有的邮箱设置。您只需在线填写您服务器主机名或主机IP地址,即可将您域名下的邮件全部转到您自己设定相应的邮件服务器 上。 就是将你的域名邮件服务器分开,将它设置到其它的IP去! 
比如同样是 ourwords.cn,如果你设置A记录是指向 123.12.123.123,而MX记录设置是指向222.22.222.222,那么你的DNS服务器接收到别人的邮件路由请求时就将会将它的请求 解释到222.22.222.222上去!而别人访问你的网页的时候仍然是访问123.12.123.123。 


什么是NS(Name Server)域名服务器记录

用来指定该域名由哪个DNS服务器进行解析。
如何查看域名的A记录、MX记 录、CNAME记录和NS记录 
那么如何才能查到域名的A记录,要查询域名的MX记录、CNAME记录或NS记录,可用 nslookup命令。nslookup是windows NT/2000/XP和unix、linux等操作系统自带的命令。(在Windows 98/Me里没有)。 
在Windows的DOS命令行窗口里,或unix/linux命令行下,输入nslookup。其中 “Default Server”和“Address”是当前上网所用的DNS服务器域名地址。“>”是nslookup的提示符。在提示符下输 入“?”和回车,可看到nslookup的帮助信息,输入“exit”和回车可退出nslookup。此时,在提示符下直接输入域名,可查到该域名的A记 录。例如: 
其中“Non-authoritative answer”表示查询结果是从DNS的cache返回的。 
输 入set type=mx,再输入域名,可查询MX记录。例如: 
输入set type=cname,再输入域名,可查询CNAME记 录。例如: 
输入set type=ns,再输入域名,可查询NS记录。例如: 
如果您申请了顶级域名或独立域名动态解析 服务,在您的域名注册商里把域名的NS记录设置域名服务商的DNS服务器后,可以用这个办法查询设置是否已经生效。 
上述的操作,都是从默认 的DNS服务器进行查询的,如果想指定查询所用的DNS服务器,可以在输入域名的时候,后面跟上一个域名服务器地址。这种查询方法对所有记录的查询都 适用。如果您在万网申请了顶级域名或独立域名动态解析服务,在未到您的域名注册商里设置域名的NS记录之前,可以用这个办法查询您的域名在万网是否能正 常解析。 


什么是动态域名解析:

指把一个固定的域名解析到一个具有动态IP的主机上。在家里或公司里上网的机器,使用动态域名服务后, 所有Internet用户就可以通过一个固定的域名访问这台计算机。网上常见公司如花生壳等即提供有动态域名服务

JS动态构造GET请求

有的时候,会有这样一种情况,当我们需要收集一些用户的页面数据或者浏览器、屏幕分辨率等时,而且这些数据是尽可能的真实的,如果让用户填写一个表单来提交,这有很多人是不愿意去做的,数据亦缺乏准确性,解决方法是使用JS。使用Javascript脚本就能轻松的取得我们需要的数据,但怎么提交到服务器就成了一个问题,使用AJAX确实是一个优越而又可行的办法,可是,有的时候我们不用表现的如此优雅,直接使用JS动态构造一个GET请求,不由分说的提交到服务器,问题也就解决了,这过程中同样不需要用户的介入。
众所周知的一件事情是:使用script标签,能在页面中新开一个通信连接(当然你可以说iframe,object标签也可以),如果我们将script标签的src指向一个php文件,那么它就可以向服务器提交数据了。动态创建script标签的方法有两种,其实实质上是一样的。

这里先创建了一个js文件,供后面将动态创建的元素的src直接指向该文件s.js内容很简单:

  1. if(v !=''){   
  2.    alert(v);   
  3. }   
  4. else{   
  5.    alert('生活于三山两水间,无比惬意释然。');   
  6. }  


1、使用createElement动态创建script元素

  1. <scripttype="text/javascript">  
  2. varv='';   
  3. try{   
  4. v='7777';   
  5. varscript_el=document.createElement("script");   
  6. script_el.type="text/javascript";   
  7. script_el.src="s.js?"+Math.random();   
  8. h=document.getElementsByTagName("head")[0];   
  9. h.appendChild(script_el);   
  10. }   
  11. catch(e){   
  12. alert(e);   
  13. }   
  14. v='改哈子看看有嘛效果';   
  15. </script>  


2、使用document.write直接写入

  1. <scripttype="text/javascript">  
  2. varv='其实这个例子举得非常失败,我。。。';   
  3. document.write('<scripttype="text\/javascript"src="s.js?"'+Math.random()+'><\/script>');   
  4. </script>  

这两种都能轻松的动态创建一个script标签,来构造get请求,可以根据实际情况选择使用2种方法。

ajax中的跨域问题也就可以这么解决了,获取远程服务器数据,不再是难题,这种方法不好使用XML而已。

用createElement创建了script标签,使用appendChild方法进行附加。

PHP动态网站开发的一些技巧

1、命名

  1. <input
     
  2. type
    =
    'checkbox'
     
  3. name
    =
    'checkbox[]'
     
  4. value
    =$dwmyrow[banzhu] 
  5. />
     

2、使用

当计划当作sql指令的一部分时:如果参与控制的字段是数值型的,则

  1. if(! empty($_POST['checkbox'])) 
  2. {  
  3. $
    expr
     = 
    join
    (",", $_POST['checkbox']);  
  4. $
    sql
     = 
    "select * from tbl_name where  field in ($expr)"
    ;  
  5. }  

 

如果PHP动态网站开发说参与控制的字段是数值型的,则

 

  1. if(! empty($_POST['checkbox'])) 
  2. {  
  3. $
    expr
     = 
    "'"
    .join("','", $_POST ['checkbox']).".";  
  4. $
    sql
     = 
    "select * from tbl_name  where field in ($expr)"
    ;  
  5. }  

 

PHP判断Form表单是否提交

 

  1. $
    action
    =$HTTP_POST_VARS["Button1"];  
  2. if($
    action
    =="提交")  
  3. {  
  4. //执行表单操作  
  5. }  
  6. else  
  7.  {  
  8. //读取默认值  
  9. }  

 

PHP动态网站开发中PHP 获取字符串长度

 

  1. strlen($myrow[1])  

 

PHP Url转向

 

  1. Header("Location: ".
    $_SERVER["HTTP_REFERER"]);  

 

PHP动态网站开发中的超全局对象

 

  1. < ?
    php
     
  2. $
    a
     = 
    1
    ;  
  3. $
    b
     = 
    2
    ;  
  4. function Sum()  
  5. {  
  6.  $GLOBALS["b"] =  $GLOBALS["a"] + $GLOBALS["b"];  
  7. }  
  8. Sum();  
  9. echo $b;  
  10. ?>
     

 

PHP 表单取值

 

 如果 method="get" 就用 $_GET["test"] 代替$test 如果 method="post" 就用 $_POST["test"] 代替$test

 

PHP动态网站开发时取得当前IP

 

  1. <?
  2. =$HTTP_SERVER_VARS["REMOTE_ADDR"]
  3. ?>
     

 

PHP 取得当前时间

 

  1. <?
    php
     
  2.  echo date("Y-m-d G:i:s");  
  3. ?>
     
  4.  date("Y年m月d日")  
  5.  Date ("Y-n-j")  

 

以上就是PHP动态网站开发的具体技巧讲解。