您现在的位置:

桑葚粥 >> 正文 >

2013山东高考满分作文范文:看到了,就大声说出来高考

我用的是最新版的wampsever5,在win7(64位)下安装正常使用,没有无法进入phpMyAdmin的问题,但是我在虚拟机安装了win8(64位专业版),测试在win8下面的使用情况时,就有问题,就是直接单击在wamp图标选择进入phpMyAdmin时,提示403 forbidden,就是禁止访问的意思。最后突然有一个想法,看下127.0.0.1/phpmyadmin能不能进,还真的进了,而在wamp图标上选择phpmyadmin进的话,看网址栏其实是localhost/phpmyadmin,我就想,为什么用127.0.0.1/phpmyadmin可以进而用localhost/phpadmin就不可以进呢?(首先说明:用127.0.0.1和localhost都可以进入wamp的主页),我就去查,后来看到localhost主页左下角有一个Your Aliases,下面写着:

我就点了第一个phpmyadmin,结果也是一样,进不了,提示403 forbidden。但是却让我发现了aliases这个单词,它的意思是"别名",然后我去网上找了一下,又研究了一下wamp的菜单(就是左键点南wamp程序图标弹出的菜单),发现wamp的apache目录下有一个Alias directories,然后Alias directories下面还有一个目录,是http://localhost/phpmyadmin/,在这个http://localhost/phpmyadmin/下面又有一个选项,是编辑alias,点一下它,就会用记事本打开,然后找到里面的:

<Directory "d:/wamp/apps/phpmyadmin3.5.1/">

Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order Deny,Allow
Deny from all
Allow from 127.0.0.1

</Directory>

把它改成

<Directory "e:/wamp/apps/phpmyadmin3.5.1/">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order Allow,Deny
Allow from all

</Directory>

OK,一切搞定(不行就重启wamp),终于可以直接点击wamp图标中的phpmyadmin选项进入phpmyadmin了,而不用手动输入127.0.0.0/phpmyadmin,这多麻烦啊。

最后上几个图

1.进入修改alias的方法,如图,点击edit alias(可能有人设置成中文,中文就是编辑alias)

2.修改前

3.修改后(其实我是按上面#号后面的提示修改的)

后记:后来发现,只是按上面的配置还是不行,我之前按上面说的配置成功是因为我之前已经修改过httpd.conf这个文件,这个文件也是修改<directory></directory>标签里面的东西,如下图

修改前:


修改后:

修改后,发现终于可以进入localhost/phpmyadmin了,后来我又把它改回去了,但是结果竟然一样可以,这个我就真不知道怎么回事了。

在修改的过程中,发现突然又进不了localhost了,刚装好的时候是可以的,后来发现只要上线了就可以了,也就是put online,如下图:

右击"我的电脑”。单击"属性”。

在"系统属性”中单击"高级”。

在"性能”中单击"设置”。

在"性能选项”中单击"数据执行保护”。

单击"添加”。选择要运行的程序。

OK。就这么简单。


<一>

用D7写了一个调用C#的WebService客户端程序。开了一个线程,定时访问WebSerice的接口。

程序在我的本本上(WINXP)测试时,跑的很欢畅。

<二>

昨天晚上,把这个WebService客户端以NT服务的形式注册部署到服务器上(Win2003 Server)。

这样开机后便可以服务方式自动运行,不用人工监管。

待部署完毕后,启动服务。但执行时间一到,日志中监测到报错:调用WebService时异常。

可原本好好的,咋这就纳闷了呢!?

并且这是个很简单的东东,于是,郁闷。

服务器没有IDE环境,Debug非常痛苦,日志记录跟踪。

跟踪发现,得到WebService对象的时候是没有问题的,但在调用其接口的时候产生了异常。

又单独写了WebService客户端可执行的测试程序,在服务器上运行。

结果Throw出的Exception是"Access violation at address 00E24255. Writeof address 00E24255”。

晕菜。这就是出名的"Access violation”。

没办法,解决问题吧。

通常访问对象(内存地址)不存在或COM异常时会有这种报错。

先在网上搜,看看是不是WebService的问题。

baidu+google,搜个底朝天,无解,继续郁闷。

"Access Violation”果真是大名鼎鼎--"最令人气恼的Windows程序遇到的错误之一”。

关于"Access violation”,的确有N多条记录被搜到,但无对症的。

其中说法不一,各有特色。

有关于系统dll的,有关于硬件设备及其驱动的。

还有一贴,好像是老猫写的,关于Delphi Access violations 问题的解决之道,亦非我所需者。

另有一贴,说是线程中访问ADO的问题,但我已经初试化了COM接口。

于是打开程序,把线程排查看了一边,没问题,好好的。

另外,一般关于Delphi打造WebService客户端的例子中,都会提到THTTPRIO的。

而我一向是不用这个东东的,嫌麻烦。

莫非是这个小东东在搞鬼,它也就是起到接口转换的作用。

我加了一个。转了一下。试了一次。

徒增加了一点郁闷。

<三>

接下来琢磨:程序在笔记本上无误,但部署在到服务器上出错。说明服务器的环境有问题,而非程序本身之过。

莫非在线程中调用WebService服务,在客户端需要部署什么插件或注册什么东东乎?

就象部署MIDAS的时候,需要注册midas.dll一样。

于是乎,狂搜。

在CSDN上发现了一个哥们说--

>使用Delphi在客户端调用WebService
>确保你的电脑上装了SoapToolkit
>新建项目,要Uses ComObj

很好奇:SoapToolkit。

于是乎,搜。下载。

把"SoapToolkit30.EXE”,装到服务器上。

然,问题依然。

可选择的:急死,或气死。

<四>

时值深夜,大雨如注。

抓耳挠腮,百思不解。

蚊虫袭来,浑然不觉。

青灯古佛,颇有禅意。

凄凄惨惨戚戚中,我只能独自一遍一遍大喊:买嘎的!买嘎的!

再想办法~~

待从头,收拾旧山河。

<五>

想来想去,没办法了。换台机子试试。

于是找了一台PC,同样是Win2003 Server。

试了。没有问题。

信心大增。

突然,慢着--莫非是Delphi的问题?--这台PC上装有D7的IDE,而服务器上没有安装Delphi。

莫非在Delphi在安装的时候,注册了什么东东,这样WebService客户端就可以运行了。

而没有安装IED的机器就不能运行?--按说不会,调用WebService不会太依赖客户端的环境。

但,总结以往血淋淋的教训,从业的经验告诉过我们--这是值得试试的。

高人曾说过:绝望的时候,稻草是可以救命的。

<六>

我的稻草是一张D7的安装光盘,哪怕是盗版的。 *_*

But,就在这个深夜--华南的多雨的闷热的深夜里--我的稻草没有在身西安癫痫病治疗的专科医院边。 :(

(转折句,的确能够加强语感,我喜欢!)

它在光盘包里。光盘包在行李箱里。而行李箱在住所。

住所在X公里外(X>=5)。

<七>

坐上车的时候,雨已经停了。

回到住所,巴西正对克罗地亚。

那群跳桑巴舞的家伙在拼命的时候,WK,我也在北京时间里奋斗。

不过,对不起了,兄弟们!你们继续,俺洗洗睡了。

天生对某些运动不敢兴趣。

辗转反侧。

绕树三匝。

终于睡去。

<八>

7点01分,短信。是昨夜比赛结果。免费赠的。

起床。

D7光盘。

吃点喝点。

上班。

<九>

D7在哪里?D7在光盘上。光盘在光驱中。

光盘是好光盘。光驱是好光驱。不错。

茶叶还没有泡展,已安装完毕。

对一些人来说,我们深爱着D7--我们吃饭的家伙。

欣欣然。

D7的启动画面已经在Win2003 Server的服务器上出现了。

但是,报错了--

是"Can‘t load package:dclite70.bpl”的异常。

同样显示的,还有"Access Violation”的错误。

我,脸绿了。

不止是简单的faint!

难道安装出有问题了?在安装时没有报错。

第一次遇到这种问题--我信赖的D7啊!

要有怀疑精神。怀疑自己安装错了。

卸载。

OS重启。

再次安装。

再次安装完毕。

再次启动D7。

再次是"Can‘t load package:dclite70.bpl”的异常。

再次显示的,还有"Access Violation”的错误。

于是,开始缺氧+眩晕。

<十>

从昏厥中醒来,深深太平洋的深深质疑 Win2003 Server + D7 的组合。

而且,这个还是个"刀片”服务器。

当时,有了一个决定。

凡遇到用Win2003者,先爆打一顿,弄成半死不活,半身不遂,半条命,爆头。

然后再用"刀片”想法弄成酱。

酱油也行。

:"(

<十一>

行走江湖。安全第一。

风平浪静。海阔天空。

平时对Win2003使用不多,了解不深。

看了看系统,是Standard Edition + Service Pack 1的。

上网了解了一下,N个人曾在Win2003 Server下遇到过各种各样的"Access Violation”。

打过各种各样的补丁。

又特意去看了看那台PC,装的是Enterprise Edition + Service Pack 1的。

版本果然不一样。

于是,找补丁。

期待--蓦然回首。那X却X。

<十二>

百二秦关终属楚。

三千越甲可吞吴。

微软的补丁可真及时,勘比宋押司。

补丁号码是:KB904639

名称是:Windows Server 2003(32 位 x86)更新程序 (KB904639)

快速描述:安装本更新程序可以解决一个使某些应用程序无法在 64 位环境中运行的问题。

文件名: WindowsServer2003-KB904639-x86-CHS.exe

版本: 904639

知识库 (KB) 文章: KB904639

发布日期: 2005/10/24

语言: 简体中文

下载大小: 560 KB

概述:
安装本更新程序可以解决一个使某些应用程序无法在 64 位环境中运行的问题。
尝试运行使用 Microsoft 数据访问组件 (MDAC) 2.8 的接口远程处理组件的 64 位应用程序时,
您可能会收到"access violation”(访问冲突)错误消息,
或者在使用任务管理器查看时 dllhost.exe 进程可能会显示 100% CPU 占用率。
安装本更新程序之后,可能需要重新启动计算机。


莫非这就是传说中的Cut the Gordian Knot的亚历山大之剑?抑或是达摩克利斯之剑?

试。

果然--不爽。

念去去。

千里烟波。

凝噎。无语。崩溃。

<十三>

又找其他的补丁。

没有合格的。

D7仍启动仍报错:Can‘t load package:dclite70.bpl。

但在PC机上(Enterprise Edition + Service Pack 1)是可以的。

诅咒Microsoft。

废池乔木。

犹厌言兵。

崩溃中。

<十四>

怎么办?

接着搜。

随便。摧残。

飞沙走石。天昏地暗。

风雨如晦。鸡鸣不已。

黄河之水天上来。

一片孤城万仞山。

两岸猿声啼不住。

日照香炉升紫烟。

如履薄冰。如临深渊。

如芒在背。如坐针毡。

如切如磋。如琢如磨。

<十五>

最是那一低头的温柔,恰似水莲花不胜凉风的娇羞。

以dclite70.bpl为关键字,搜索。

感谢互联网吧!

感谢搜索引擎吧!

感谢发贴回贴的兄弟吧!

俺的神啊上帝以及老天爷啊!

亚历山大来了!

在52SDN找到一个标题为"delphi 7 能不能在windows 2003 server上安装?”的帖子。

内容如下:

安装在2003上想试试,没想到打开提示dclite70.bpl访问非法地址。

后果就是项目的选项窗口打不开(访问非法地址)。

那位兄弟有解决办法?

------------

安装过的兄弟提示一下,谢谢!

------------

可以...我装过了...

------------

对delphi 关闭数据执行保护就好了 :)

------------

看到最后一行!

疯了!

<十六>

右击"我的电脑”。单击"属性”。

在"系统属性”中单击"高级”。

在"性能”中单击"设置”。

在"性能选项”中单击"数据执行保护”。

单击"添加”。选择要运行的程序。

OK。就这么简单。

<十七>

借用温大侠的话。

如鹤临风。

如鸢凌空。

如鸾舞松。

如鹏回峰。

疯了!

<十八>

小项,before Game Over,say:天亡我,非用兵之罪也。

Windows 2003 Standard Edition。

今天,你疯了没有!?

一、前言  

 在HTML4的时代,各前端工程师为了实现拖拽功能可说是煞费苦心,初听HTML5的DnD API觉得那些痛苦的日子将一去不复返,但事实又是怎样的呢?下面我们一起来看看DnD API的真面目吧!

二、由于篇幅较长,特设目录一陀

三、HTML4下实现简单拖拽

四、HTML5下实现简单拖拽

五、如何启用DnD效果

六、draggable属性详解

七、DnD的生命周期

八、DnD中最重要的数据传递对象──DataTrans郑州癫痫病医院有哪些效果好fer对象

九、[object DataTransferItemList]类型

十、[object DataTransferItem]类型

十一、浏览器支持

十二、特征检测是否支持HTML5的DnD API

十三、总结

十四、参考

十五、勘误

十六、书评

三、HTML4下实现简单拖拽

功能:实现在div#title上按下鼠标左键并移动鼠标时,拖拽整个div#dialog,但释放鼠标时停止拖拽。(www.66460.com)

html代码片断

js代码片断

DnD.js工具库

扩展:战锤全面战争 魔法 / 战锤全面战争魔法之风 / 战锤全面战争魔法太弱

contains.js工具库

具体代码地址:https://github.com/fsjohnhuang/DnD-polyfill/blob/master/sample/sample3/

四、HTML5实现简单拖拽

功能:实现在div#title上按下鼠标左键并移动鼠标时,拖拽整个div#dialog,但释放鼠标时停止拖拽。下面的例子仅能在FF下运行

html代码片段

js代码片段

DnD.js工具库

扩展:战锤全面战争 魔法 / 战锤全面战争魔法之风 / 战锤全面战争魔法太弱

contains.js工具库与上一节的相同

具体代码地址:https://github.com/fsjohnhuang/DnD-polyfill/blob/master/sample/sample4/

五、如何启用DnD效果

html片段

js片段

关键点:

1. 为触发拖拽的元素添加 draggable="true" 特性,用于启动HTML5的DnD功能(即元素的 dragstart 事件可被触发);

2. 在FF下即使添加 draggable="true" 特性,但仅仅会触发 dragstart 事件,但DnD功能并没有被完全打开(拖拽元素时没有任何视觉效果),需要调用 event.dataTransfer.setData(‘Text‘,‘‘) 彻底开启DnD功能。

3. 在Safari4下则需要借助CSS规则来启动DnD功能, [draggable=true]{ -webkit-user-drag: element; } 

六、draggable属性详解

作用:用于指定标签是否可被拖拽

属性值范围如下:

1. true ,表示可被拖拽

2. false ,表示不可被拖拽

3. auto ,默认值,img和带href属性的a标签则表示可拖拽,其他标签表示不可被拖拽

4. 其他值,表示不可被拖拽

七、DnD生命周期

1. 被拖拽元素的生命周期

 dragstart :当被拖拽元素开始被拖拽时触发

  注意:

  [a]. event.dataTransfer的大部分设置均在这里配置

  [b]. 若调用event.preventDefault()则会阻止拖拽行为,导致后续的拖拽事件不被触发

  [c]. 触发dragstart事件后,其他元素的mousemove,mouseover,mouseenter,mouseleave,mouseout事件均不会被触发了

 drag :当被拖拽元素被拖拽时触发

 dragend :当拖拽行为结束后触发

2. 目标元素的生命周期

  dragenter :当被拖拽元素进入目标元素时触发

  dragover :当被拖拽元素在目标元素上移动时触发

  注意:

   [a]. 可以在这里设置dropEffect的值,事件的默认行为是将dropEffect设置为none

   [b]. 该事件是被拖拽元素在目标元素上移动一段时间后才触发

   [c]. 事件的默认行为是不允许被拖拽元素在其他元素上释放或放置(即无法触发 drop 事件),需要通过 event.preventDefault() 来阻止默认行为才能触发后续的 drop 事件。

   drop :当被拖拽元素在目标元素上,而且释放鼠标左键时触发

  注意:

  [a]. 对于外来的被拖拽元素(超链接、文件、图片源), drop 事件的默认行为是浏览器将当前页面重定向到被拖拽元素所指向的资源上

  [b]. 对文档内部的被拖拽元素,IE10+和Chrome下的默认行为是不作为,而FF得默认行为是新打开一个文档用于访问被拖拽元素所指向的资源

  dragleave:当被拖拽元素离开目标元素时触发。

示例代码:

3. 整体生命周期

 dragstart -> drag -> dragenter -> dragover ->  dragleave -> drop -> dragend 

八、DnD中最重要的数据传递对象──DataTransfer对象

 DataTransfer对象用于在配置拖拽行为效果,并且在拖拽过程的各事件间传递数据信息。它存储在事件对象当中,下面我们逐步了解它吧。

1. [object DragEvent]对象

 继承自 [object MouseEvent] 对象,其实就多了个 {DataTransfer} dataTransfer 属性

2. [object DataTransfer]对象详解

 上文说到DataTransfer对象可用于传递数据信息,而数据信息的数据类型被限定为字符串文件类型

2.1. effectAllowed 和 dropEffect 属性

   这个两个属性对于初次接触DnD的朋友来说,可谓最令人摸不着头脑的,网上和各书籍上对这两个属性的解释均不全面,下面我试图尽量把它们讲明白。

家族遗传癫痫病怎么预防    effectAllowed 和 dropEffect 最主要的作用是,用于配置拖拽操作过程中鼠标指针的类型以便提示用户后续可执行怎样的操作;其次的作用是,控制 drop 事件的触发与否。

扩展:战锤全面战争 魔法 / 战锤全面战争魔法之风 / 战锤全面战争魔法太弱

   [a] effectAllowed 

    作用:用于设置被拖拽元素可执行的操作。

    取值范围:

   copy ,限定dropEffect的属性值为copy,否则会鼠标指针为禁止样式

   link ,限定dropEffect的属性值为link,否则会鼠标指针为禁止样式

      move ,限定dropEffect的属性值为move,否则会鼠标指针为禁止样式

       copyLink ,限定dropEffect的属性值为copy和link,否则会鼠标指针为禁止样式

       copyMove ,限定dropEffect的属性值为copy和move,否则会鼠标指针为禁止样式

       linkMove ,限定dropEffect的属性值为link和move,否则会鼠标指针为禁止样式

   all ,允许dropEffect的属性值为任意值

       none ,鼠标指针一直为禁止样式,不管dropEffect的属性值是什么

       uninitialized ,没有限定dropEffect属性的值,效果和 all 一样。

   注意:仅能在 dragstart 事件中设置该属性,其他事件中设置均无效。

   [b].  dropEffect 

 作用:用于设置目标元素将执行的操作,若属性值属于 effectAllowed 范围内,则鼠标指针将显示对应的指针样式,否则则显示禁止的指针样式。

   取值范围:

        copy :被拖拽元素将被复制到目标元素内,若属于 effectAllowed 范围内时,则鼠标指针显示复制的样式,否则则显示禁止的指针样式。

 link :被拖拽元素将以超链接的形式打开资源(具体是否打开资源请参考七、2),若属于 effectAllowed  范围内时,则鼠标指针显示超链接的样式,否则则显示禁止的指针样式。

       move :被拖拽元素将被移动到目标元素内,若属于 effectAllowed   范围内时,则鼠标指针显示移动的样式,否则则显示禁止的指针样式。

        none :被拖拽元素不能在目标元素上作任何操作,一直显示禁止的指针样式。除了文本框外其他元素的默认值均为none

注意:

1. 仅能在 dragover 事件中设置该属性值,其他事件中设置均无效

2. 当显示禁止的指针样式时,将无法触发目标元素的 drop 事件。

   [c]. 在真实浏览器中的测试结果

dropEffect默认值

默认使用鼠标指针的效果

1. 无法通过 shift键 切换copyLink,copyMove和linkMove的样式;

2. 若effectAllowed设置为copyLink、copyMove或linkMove,且dropEffect与之对应,则鼠标样式将为dropEffect所设置的样式

1. 无法通过 shift键 切换copyLink,copyMove和linkMove的样式;

2. 若effectAllowed设置为copyLink、copyMove或linkMove,且dropEffect与之对应,则鼠标样式将为dropEffect所设置的样式

1. 可通过 shift键 切换copyLink,copyMove和linkMove的样式;

扩展:战锤全面战争 魔法 / 战锤全面战争魔法之风 / 战锤全面战争魔法太弱

2. 若effectAllowed设置为copyLink、copyMove或linkMove,且dropEffect与之对应,则鼠标样式将为dropEffect所设置的样式

 2.2. 其他属性

 items :数据类型为DataTransferItemList,存储DataTransfer对象中所有的数据项

    注意:1. FF33 for Linux下没有该属性

        2. IE10+没有该属性

   files :数据类型为FileList(IE5~9没有该属性)

     types :数据类型为DOMStringList,存储DataTransfer对象中所有数据项的数据类型

注意:1. IE5~9下没有该属性

 2. 仅能在dragenter,dragover和drop中获取该属性

 2.3. 方法

    void addElement({HTMLElement} element) :添加一起跟随鼠标移动的元素。仅在 dragstart 事件中调用,Chrome37和IE10+不支持该方法;

     void setDragImage({Element} image, {long} x, {long} y) :设置拖动时跟随鼠标移动的图片,用来替代默认的元素,若image不是图片元素则会元素临时转换为图片;x用于设置图标与鼠标在水平方向上的距离,y设置图标与鼠标在垂直方向上的距离。仅在 dragstart 事件中调用。IE10+不支持该方法;

  注意:

1. {Element} image必须在DOM树中,而且在渲染树中(即display不为none)为有效元素,否则会导致没有元素跟随鼠标移动;

2. Chrome37下,若{Element} image为无效元素时,将不会触发dragstart事件后的其他事件。

&nb治疗癫痫病哪家医院好啊?sp;     boolean setData({DOMString} format, {DOMString} data) :将指定格式的数据赋值给dataTransfer或clipboardData,format值范围为URL、Text(或text)和各种MIME类型,其实Text会被自动映射为text/plain,URL会被自动映射为text/uri-list类型。仅在 dragstart 事件中调用。

   注意:

1. FF5-是不会将text映射为text/plain,而仅仅支持Text映射为text/plain,因此使用Text或直接使用text/plain

2. IE10+仅支持Text和URL两种类型,不支持text/plain、text/uri-list等类型

3.  text/plain类型则不会对数据进行额外处理,而text/uri-list类型则会将数据视为url来使用(体现在当将元素拖拽到OS桌面释放时)

4.  Chrome和FF支持任意的非空字符串作为format

5. 当没有填写第二个入参时,则会根据format来删除相应的数据项

6. 当设置text/uri-list类型的数据时,数据必须带协议名,如http://fsjohnhuang.cnblogs.com;若仅写为fsjohnhuang.cnblogs.com,那么dataTransfer将自动弃除,在`dragstart`事件还能获取到,但在drop事件中将无法获

      DOMString getData({DOMString} format) :从DataTransfer对象或ClipboardData对象中获取指定格式的数据

      void clearData([{DOMString} format]) :从DataTransfer对象或ClipboardData对象中删除指定格式或全部kind值为string的数据。仅在 dragstart 事件中调用,在其他事件中调用会抛InvalidStateError。

 2.4. 数据存储模式

Read/Write mode:在 dragstart 事件为该模式,可读写数据

Read-only mode:在 drop 事件为该模式,仅能读取数据

Protected mode:在其他事件为该模式,仅能枚举数据

九、[object DataTransferItemList]类型

 readonly unsigined long length 

 getter DataTransferItem(unsigned long index) ,使用方式:items[1]

 deleter void(unsigned long index) ,使用方式:delete items[1],在非Read/Write mode下会报InvalidStateError,而添加数据则不会有问题

 void clear() 

 DataTransferItem add(DOMString data, DOMString type) 

 DataTransferItem add(File data) 

十、[object DataTransferItem]类型

 readonly attribute DOMString kind ,表示数据的大类型,值范围string和file

 readonly attribute DOMString type ,表示数据的小类型,一般使用mimetype表示,但在Chrome和FF下可以是任意非空字符串

 void getAsString(FunctionStringCallback cb) ,当kind为string时,则只能在Read-only mode和Read/Write mode下才可用。其中cb仅有一个类型为{DOMString}的入参

 File getAsFile() ,当kind为file时,则只能在Read-only mode和Read/Write mode下才可用,没有数据时返回null

十一、浏览器支持

 IE5~9部分标签支持;

 IE10+、FF、Chrome支持。

 也许大家会好惊讶IE5已经开始支持DnD API啦??其实DnD API的最初是由IE提出来的,只是后来被HTML5纳入草案而已。大家也许会问在IE5~9上运行上文的代码没有效果,是不是我写错了,下一篇《JS魔法堂:IE5~9的Drag & Drop API()》我们将一起探讨IE5~9的DnD API。

扩展:战锤全面战争 魔法 / 战锤全面战争魔法之风 / 战锤全面战争魔法太弱

十二、特征检测是否支持HTML5的DnD API

 由于IE5~9的DnD API与HTML5标准的有差异,因此特征检测变得尤为必要了。下面的代码参考了Modernizr.draganddrop的实现(地址:https://github.com/Modernizr/Modernizr/blob/master/feature-detects/draganddrop.js)

十三、总结

 回到文章最开头的两个示例,会发现使用HTML5 DnD API实现拖拽效果的代码量并不比HTML4中的少,效果也并不理想(个人水平有限优化也没做好),最让人心酸的是各浏览器在细节上还是有差异的(兼容性是前端工程师一直的痛啊)。也许大家会说那么DnD API是不是就仅仅好看而不实用呢?其实不然,只是示例把这个特性用到不适合的地方而已。

 HTML5 DnD API最常见的用法就是文件拖拽上传,或把文档内某元素拖到其他元素内或OS桌面上等。这些都是HTML4时代的js很难处理,或者无法处理的。

 尊重原创,转载请注明来自: ^_^肥仔John

十四、参考

http://www.w3school.com.cn/html5/html_5_draganddrop.asp



http://www.zhangxinxu.com/wordpress/2011/02/html5-drag-drop-%E6%8B%96%E6%8B%BD%E4%B8%8E%E6%8B%96%E6%94%BE%E7%AE%80%E4%BB%8B/
http://my.oschina.net/caixw/blog/102845

《HTML5实战》第11章、HTML5中元素的拖放
《HTML5用户指南》第8章、拖放
http://msdn.microsoft.com/en-us/library/ff974353(v=vs.85).aspx
《HTML5与CSS3权威指南》4.5.拖放
《论道HTML5》3.3.Drag & Drop API

十五、勘误

《HTML5实战》P292 setData的format参数格式包含text/url-list,应更正为text/uri-list

十六、书评

《HTML5实战》第11章、HTML5中元素的拖放,这一章感觉就一笔带过,纯属印象派。
《HTML5用户指南》第8章、拖放,除了简单介绍HTML5 DnD API外,还介绍起源和IE上DnD的特点和作者对DnD API不完美的抱怨,比《HTML5实战》更值得拜读。
《HTML5与CSS3权威指南》4.5.拖放,内容,深度与《HTML5实战》相似
《论道HTML5》3.3.Drag & Drop API,对比上述三本书,它提及到使用Modernizr作DnD特征检测,其他基本相似

扩展:战锤全面战争 魔法 / 战锤全面战争魔法之风 / 战锤全面战争魔法太弱

© http://zw.ptjdc.com  王赫斯怒网    版权所有