HTML5 JS 如何调用DLL文件命令行调用jar文件, 不使用插件

插件描述:Video.js 是一个通用的在网页上嵌入视频播放器的 JS 库,Video.js 自动检测浏览器对 HTML5 的支持情况,如果不支持 HTML5 则自动使用 Flash 播放器。(要支持ie低版本请下载5.4.3版 )
Video.js最新v6.6.2版 更新Bug 修复进度条时间工具提示bug通过添加word-break css reset(#c4),关闭#2964在寻求 (#4860) (baf0982) 时, 在Safari中拒绝未处理的承诺, 关闭 #4853例行工作netlify:在netlify命令(#4862)(8f450ea)中添加一些调试信息软件包:更新版本2.0.0(#4834)(22fcd03)Video.js最新v6.2.8版 更新Video.js最新v6.2.5版 更新Video.js最新v5.18.4版 更新(支持ie8)Video.js最新v5.16版 更新Video.js最新v5.10.8版 更新Video.js v5.8.8版 更新Video.js历史v5.4.3版 更新Video.js 是一个通用的在网页上嵌入视频播放器的 JS 库,Video.js 自动检测浏览器对 HTML5 的支持情况,如果不支持 HTML5 则自动使用 Flash 播放器。使用方法在页面中引用video-js.cs样式文件和video.js&link&href=&video-js.css&&rel=&stylesheet&&type=&text/css&&
&script&src=&video.js&&&/script&设置flash路径,Video.js会在不支持html5的浏览中使用flash播放视频文件&script&
&&&&videojs.options.flash.swf&=&&video-js.swf&;
&/script&htmlposter=&**&播放初始图。可使用三种视频格式,根据所需要格式选择对应的。&video&id=&example_video_1&&class=&video-js&vjs-default-skin&&controls&preload=&none&&width=&640&&height=&264&
&&&&&&poster=&http://video-js.zencoder.com/oceans-clip.png&
&&&&&&data-setup=&{}&&
&&&&&source&src=&http://视频地址格式1.mp4&&type='video/mp4'&/&
&&&&&source&src=&http://视频地址格式2.webm&&type='video/webm'&/&
&&&&&source&src=&http://视频地址格式3.ogv&&type='video/ogg'&/&
&&&&&track&kind=&captions&&src=&demo.captions.vtt&&srclang=&en&&label=&English&&&/track&&!--&Tracks&need&an&ending&tag&thanks&to&IE9&--&
&&&&&track&kind=&subtitles&&src=&demo.captions.vtt&&srclang=&en&&label=&English&&&/track&&!--&Tracks&need&an&ending&tag&thanks&to&IE9&--&
&/video&设置自动播放将下面代码加到html中代码后面&script&type=&text/javascript&&
&&&&var&myPlayer&=&videojs('example_video_1');
&&&&videojs(&example_video_1&).ready(function(){
&&&&&&&&var&myPlayer&=&
&&&&&&&&myPlayer.play();
&/script&默认情况下,大的播放按钮是被定为在左上角的,这样就不会覆盖视频内容。如果你想让这个播放按钮居中,你可以给你的 video 标签添加额外的 vjs-big-play-centered 样式,比如:&video&id=&example_video_1&&class=&video-js&vjs-default-skin&vjs-big-play-centered&
&&controls&preload=&auto&&width=&640&&height=&264&
&&poster=&http://video-js.zencoder.com/oceans-clip.png&
&&data-setup='{&example_option&:true}'&
&/video&如果你还对播放按钮样式不满意可重新定义.video-js .vjs-big-play-button{/*这里的样式重写*/}。为动态加载的 HTML 元素设置 Video.js如果你的 web 页面或者应用是动态加载 video 标签的(ajax,appendChild,等等),这样在页面加载后这个元素是不存在的,那么你会想要手动设置播放器而不是依靠 data-setup 属性。要做到这一点,首先将 data-setup 属性从 video 标签中移除掉,这样在播放器初始化的时候就不会混乱了。接下来,运行下面的 javascript ,有时在 Video.js 加载后,有时是在 video 标签被加载进 DOM 后,videojs(&example_video_1&,&{},&function(){
&&//&Player&(this)&is&initialized&and&ready.
});videojs 方法中的第一个参数是你的 video 标签的 ID,用你自己的代替。第二个参数是一个选项对象。它允许你像设置 data-setup 属性一样设置额外的选项。第三个参数是一个 'ready' 回调。一旦 Video.js 初始化完成后,就会触发这个回调。你也可以传入一个元素本身的引用来代替元素ID:videojs(document.getElementById('example_video_1'),&{},&function()&{
&&//&This&is&functionally&the&same&as&the&previous&example.
videojs(document.getElementsByClassName('awesome_video_class')[0],&{},&function()&{
&&//&You&can&grab&an&element&by&class&if&you'd&like,&just&make&sure
&&//&if&it's&an&array&that&you&pick&one&(here&we&chose&the&first).
});如果您无法播放内容,您得确保使用了 正确的格式,你的 HTTP 服务器可能无法提供正确的 MIME类型 的内容以下感谢网友 的分享var videoObj = videojs(“videoId”);ready:myPlayer.ready(function(){
&&&&//在回调函数中,this代表当前播放器,
&&&&//可以调用方法,也可以绑定事件。
})播放:myPlayer.play();暂停:myPlayer.pause();获取播放进度:var&whereYouAt&=&myPlayer.currentTime();设置播放进度:myPlayer.currentTime(120);视频持续时间,加载完成视频才可以知道视频时长,且在flash情况下无效var&howLongIsThis&=&myPlayer.duration();缓冲,就是返回下载了多少var&whatHasBeenBuffered&=&myPlayer.buffered();百分比的缓冲var&howMuchIsDownloaded&=&myPlayer.bufferedPercent();声音大小(0-1之间)var&howLoudIsIt&=&myPlayer.volume();设置声音大小myPlayer.volume(0.5);取得视频的宽度var&howWideIsIt&=&myPlayer.width();设置宽度:myPlayer.width(640);获取高度var&howTallIsIt&=&myPlayer.height();设置高度:myPlayer.height(480);一步到位的设置大小:myPlayer.size(640,480);全屏myPlayer.enterFullScreen();离开全屏myPlayer.enterFullScreen();添加事件durationchange
ended&//播放结束
fullscreenchange
loadedalldata
loadeddata
loadedmetadata
pause&//暂停
play&&//播放
timeupdate
volumechange
resize&inherited
var&myFunc&=&function(){
&&&&//&Do&something&when&the&event&is&fired
};事件绑定myPlayer.on(&ended&,&function(){
&&&&console.log(&end&,&this.currentTime());
myPlayer.on(&pause&,&function(){
&&&&console.log(&pause&)
});删除事件myPlayer.removeEvent(“eventName”,&myFunc);一个页面中有多个视频,需要点击后触发bootstrap 的模态窗,再弹出视频我个人的方法是:html:&a&videohref=&http://xxx.mp4&&class=&video_link&&&img&&src=&../images/xxx.jpg&/&&/a&JS:$(&.video_link&).click(function()&{
&&&&var&myPlayer&=&videojs('my-video');
&&&&var&videoUrl&=&$(this).attr(&videohref&);
&&&&videojs(&my-video&,&{},&function()&{
&&&&&&&&window.myPlayer&=&
&&&&&&&&$(&#mymoda&.video-con&#my-video&source&).attr(&src&,&videoUrl);
&&&&&&&&myPlayer.src(videoUrl);
&&&&&&&&myPlayer.load(videoUrl);
&&&&&&&&myPlayer.play();
&&&&$(&.click-modal&).click();
//&模态窗消失时,关闭视频&&&&
$('#mymoda').on('hidden.bs.modal',&function()&{
&&&&myPlayer.pause();
相关插件-音频和视频
音频和视频
音频和视频
音频和视频
音频和视频
讨论这个项目(939)回答他人问题或分享插件使用方法奖励jQ币
猪小二呐呐呐 0
拖动进度条的时候回到了初始位置怎么回事
猪小二呐呐呐 0
视频为弹出层,想要点击弹出层关闭按钮的同时视频播放结束,再次点击弹出层时回到初始时间播放?
猪小二呐呐呐1
已解决,用load()
我用的是5.4.3版本,为什么我的enterFullScreen()全屏事件是未定义
使用 myPlayer.requestFullscreen();也没有全屏,这是为什么
使用了rem布局,,怎么修改播放按钮,声音,那块空间的样式呢?求助
取消控件的显示,然后自己用
样式,模仿控件的功能么?
点击全屏之后,显示的,播放,声音按钮,声音条,都是正常的,我发现,点击全屏前后的那些播放控件用的是同一套,样式一样,,,我不知道为什么,一开始播放的时候变小了
The media playback was aborted due to a corruption problem or because the media used features your browser did not support.请问视频播放完毕后报这个错误怎么解决
长帽子皮皮0
按照变换src方式,点击模态框,打开视频时,会报错,(CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED) The media could not be loaded, either because the server or network failed or because the format is not supported.如果没有myPlayer.src(videoUrl); myPlayer.load(videoUrl);即没有变换地址时,不会报错,能正常打开视频,不过都是同一个视频。
加上自动播放后代码报The element or ID supplied is not valid. (videojs)
代码放在底部也不管用
是怎么回事 求指教
MP4,几十M或者一百多M的能正常播放。两百多M的不能正常播放,有声音,没有画面,这是什么原因呢?
jinnian1989 0
请问怎么去掉视频的全屏播放按钮,因为有些浏览器支持,有些不支持,点击了没有反应,使用不太好
请问作者,为什么我有多份文件播放,播放第一个没问题,后面的就只能听声音,看不到画面,不知怎么回事
刷新下看看
&frameset&cols=&220,*&&rows=&*&&frameborder=&no&&border=&0&&framespacing=&0&&allowfullscreen=&true&&allowtransparency=&true&&allowscriptaccess=&always&&webkitallowfullscreen=&true&&mozallowfullscreen=&true&&
&&&&frame&src=&/cnt/video/HtmlPage1.html&&name=&leftFrame&&scrolling=&No&&noresize=&noresize&&id=&leftFrame&&title=&leftFrame&&allowfullscreen=&true&&allowtransparency=&true&&allowscriptaccess=&always&&webkitallowfullscreen=&true&&mozallowfullscreen=&true&&/&
&&&&frameset&rows=&46,*&&frameborder=&no&&border=&0&&framespacing=&0&&allowfullscreen=&true&&allowtransparency=&true&&allowscriptaccess=&always&&webkitallowfullscreen=&true&&mozallowfullscreen=&true&&
&&&&&&&&frame&src=&/cnt/video/HtmlPage1.html&&name=&topFrame&&scrolling=&No&&noresize=&noresize&&id=&topFrame&&title=&topFrame&&allowfullscreen=&true&&allowtransparency=&true&&allowscriptaccess=&always&&webkitallowfullscreen=&true&&mozallowfullscreen=&true&&/&
&&&&&&&&frame&src=&/cnt/video/HtmlPage1.html&&name=&rightFrame&&id=&rightFrame&&title=&rightFrame&&allowfullscreen=&true&&allowtransparency=&true&&allowscriptaccess=&always&&webkitallowfullscreen=&true&&mozallowfullscreen=&true&&/&
&&&&/frameset&
&/frameset&
无法全屏 不知道什么原因 作者能给说下吗? 我已经设置为允许全屏了
PROMULGATOR
北京市鹏博士
关注作者 (663)
收藏此插件 (1061)
我当前jQ币余额:正在获取..
已下载次数:61231
所需jQ币:0后使用快捷导航没有帐号?
要用html5 和js 开发一个3D项目, js能调用c++的dll吗?
最近有个项目, 就是在浏览器中浏览3d模型, 源程序是C++写的。 查看插件的开发方式NPAPI, 好像现在firefox和chrome都摒弃这种做法。网友建议用HTML5和js做。 请问js能调用C++ 写的dll吗 ? 怎么使用。。
纯HTML5 不允许直接调用二进制。
NPAPI等不建议使用。
纯HTML5 不允许直接调用二进制。
NPAPI等不建议使用。
那 Javascript 能调用, 有没有实现过的朋友。 我看网上有些介绍可以调用dll
那 Javascript 能调用, 有没有实现过的朋友。 我看网上有些介绍可以调用dll&&...
调用只能用NPAPI。至于3D渲染等等。基本就别考虑NPAPI了。NPAPI参考:
用纯HTML5实现吧。
调用只能用NPAPI。至于3D渲染等等。基本就别考虑NPAPI了。NPAPI参考:https://developer.mozilla.org/en- ...
那我看网上的js-types 方法调用好像可以, 这个方法有用过没&&https://wiki.mozilla.org/JSctypes
那我看网上的js-types 方法调用好像可以, 这个方法有用过没&&https://wiki.mozilla.org/JSctypes ...
这个是给火狐的扩展用的。网页不允许。
试过 emscripten 吗?
试过 emscripten 吗?
恩 emscripten算解决方案,不过需要有源码。不太清楚lz是否有源码。
恩 emscripten算解决方案,不过需要有源码。不太清楚lz是否有源码。
我已经下载源码, 这个我去研究下。 我们现在在IE端用OCX开发这个项目。 不知道Firefox安装去调用IE内核的插件, 不知道能否实现该功能
我已经下载源码, 这个我去研究下。 我们现在在IE端用OCX开发这个项目。 不知道Firefox安装去调用IE内核 ...
火狐无法直接调用IE内核和IE专有技术,比如ocx之类的,火狐对应的是NPAPIJavaScriptActiveX DLL
一.ActiveX
Visual C++2ActiveXMFCATL
MFCActiveXActiveXMFCDLLATLMFC
VS6.0File|New
Project nameatlDemoOK
FinishOKCOM DLL
Insert|New ATL ObjectATL Object
4.Short NameCallDll
TabAttributes
4.ICallDll
(Add Property)
5.CCallDll
FileViewCallDll.cppMFCDllDllGetRegResultchResult
_com_util::ConvertBSTRToString#include &comdef.h&DLLsystem32
阅读(...) 评论()如果是java project ,只要把dll放在src中,设置一下run配置即可,但是在web project中(据有关数据,60%的人用的是tomcat),这样做完全不能加载dll。
办法总是有的,关键是如何让System.loadLibrary("testDll");找到正确的路径。下面是我总结的方法(试了很多方法,都不行,只有这种方法100%行)。
这个方法就是:
  打开你的tomcat所在目录下的bin目录,我的是C:\apache-tomcat-7.0.6\bin,把dll文件拷贝到里面
  这样你在web project中运行System.loadLibrary("testDll");就再也不会报了
  不过,实际布署到服务器时,还是报异常了,我相当的郁闷,后来才发现,原来那个server除了tomcat之外,还有一些其他的程序,也就是tomcat被包了一层,虽然server启动时,tomcat也会启动,但是tomcat不是主程序。
  于是,我把dll文件放到server的startup.bat的同级目录下,结果加载dll成功。
基于此实践,我总结成一句话:
  找到主程序运行的目录(多数为bin,除了可能被包装的),把dll文件copy进去。100%运行System.loadLibrary("testDll");就能成功。
Views(...) Comments()HTML5不用JavaScript怎么弄这个?求大神!_百度知道
HTML5不用JavaScript怎么弄这个?求大神!
我有更好的答案
HTML5是用于取代1999年所制定的HTML4.01和XHTML1.0标准的HTML(标准通用标记语言下的一个应用)标准版本;现在仍处于发展阶段,但大部分浏览器已经支持某些HTML5技术。HTML5有两大特点:首先,强化了Web网页的表现性能。其次,追加了本地数据库等Web应用的功能。广义论及HTML5时,实际指的是包括HTML、CSS和JavaScript在内的一套技术组合。它希望能够减少浏览器对于需要插件的丰富性网络应用服务(plug-in-based rich internet application,RIA),如Adobe Flash、Microsoft Silverlight与Oracle JavaFX的需求,并且提供更多能有效增强网络应用的标准集。目前HTML5已向开发人员提供了很多新的标签,如section,nav,article,header和footer等。这些标签语义化程度高,会被经常使用,但在IE6,IE7,IE8和Firefox 2等老式浏览器中却不能识别和正常使用。一、HTML5标签在浏览器展示存在的问题对于现阶段来说,使用HTML5标签可能遇到的最大问题就是如何在不支持新标签的浏览器中做恰当的处理。当我们在页面中使用HTML5元素时,可能会得到三种不同的结果。结果1:标签被当作错误处理并被忽略。那么DOM构建的时候,就会当作这个标签不存在。结果2:标签会被当作错误处理,并在DOM构建的时候依然会按照预期的代码进行创建,并且HTML标签会被构造成行内元素(也就是说虽然不能识别,但是代码里section标签依然会在dom中创建一个对应section节点,但是属于行内元素)。结果3:标签被识别为HTML5标签,然后用DOM节点对其进行替换。DOM在构建的时候和预想的一致,并且合适的样式会应用到标签上(大部分情况下是块级元素)。有一个具体的例子,大家思考一下下面的代码:&div class=&outer&&  &section&  &h1&title&/h1&  &p&text&/p&  &/section&  &/div&很多浏览器(比如Firefox 3.6和Safari4)解析的时候都会将div作为最外层的元素,然后div里面是一个识别不了的元素(section),它会在DOM中创建,并被作为一个行内元素存在。h1和p元素都是作为section元素的子节点。因为section在DOM中真实存在,所以也可以修改其样式。这种情况对应结果2。IE9之前的版本会认为section标签是一个错误,并直接将其忽略,那么h1和p标签会被解析,然后成为div标签的子节点。&/section&也会被认为是一个错误并直接跳过。在这些浏览器中实际有效的代码是这样的:&div class=&outer&&  &h1&title&/h1&  &p&text&/p&  &/div&那么,旧版本的IE浏览器除了生成的DOM结构和其他浏览器不一样,其对不可识别标签的容错能力还是很棒的。因为section节点没有在DOM树中构建,所以也就不能给其增加样式。这种情况对应结果1。当然,支持HTML5的浏览器比如IE9,Firefox4+,Safari5+会创建正确的DOM结构,然后这些标签会默认附带HTML5规范中定义的默认样式。那么,我们所面临的最大问题就是同样的代码在不同的浏览器中形成了不同的DOM结构,并且含有不同的样式。二、如何解决HTML5标签不兼容或许会有很多人在质疑:为什么老式的浏览器不能识别这些标签?其实错不在浏览器,因为在那个时代根本不存在这种标签,所以不能正确识别出来,而这种不寻常的标签识别令DOM结构变得异常。对此,人们想出了很多在现阶段页面中使用HTML5元素的解决方案。每一个解决方案为了做到兼容都会遇到一些特定的问题。在此也在马海祥博客上跟大家分享一下:1、实现标签被识别马海祥曾做个一个测试(以IE8为例),是一个文章标题和蓝色字的文章内容,其中文章内容用了article标签。代码如下:&!DOCTYPE html&  &html xmlns=&& lang=&zh-CN&&  &head&  &meta charset=&UTF-8& /&  &title&测试&/title&  &style&  article{color:#06F;}  &/style&  &/head&  &body&  &h1&文章标题&/h1&  &article&  这是文章内容,应该是一段蓝色的文字。在老式浏览器中,如果不做hack将显示异常。  &/article&  &/body&  &/html&在IE8浏览器中,显示如下:IE8不能识别article标签, 定义在标签上的CSS样式没有起作用。 在IE8中,&article&被解释成命名为&article /&和&/article /&两个空的标签元素,与文章内容并列为兄弟节点,如下图所示:既然因为不能识别标签而不能使用,那我们的解决办法就是让标签被识别出来。所幸,简单地通过document.createElement(tagName)即可以让浏览器识别标签和CSS引擎知道该标签的存在。假设我们上面的例子的&head&区域加上如下代码。&script&  document.createElement('article');  &/script&IE8浏览器中的DOM解释就会变成下图所示:自然,文字也显示成正常的蓝色。如下图所示:2、JavaScript解决方案JavaScript解决方案目的是解决在旧版本的IE中样式应用的问题。老版本的IE不会识别不明元素已经是一个耳熟能详的特性,而如果这些元素已经通过document.createElement()创建,那么浏览器就可以识别这些标签,并可以将其在DOM树中构建,然后允许开发者对其应用样式。这个方法可以确保HTML5标签能在旧版本IE中对应创建DOM节点,然后可以对其应用样式。这个方法将HTML5块级元素设置成display:block,从而可以在各个浏览器中做到兼容。今天测试以下把马海祥博客的网页改成了HTML5的,调试了一下,在FF和Opera中都显示正常了,到了IE6上却变得面目全非了。对此我还特意去找了一些使用JS代码支持HTML5标签元素的方法,在此也跟大家分享一下:(1)、使用html5shiv查看了一下,发现了html5shiv能解决这个问题,可以把HTML5的新元素转换成IE6认识的内容。只需要在你的head中调用这段代码就行:&!--if lt IE 9]&  &script src=&&&&/script&  &![endif]--&当然你也可以直接把这个文件下载到自己的网站上。但这个文件必须在head标签中调用,因为IE必须在元素解析这前知道这些元素,才能启作用!但马海祥还要提醒你一下:还要在你的CSS文件中加上以下代码,不然有可能会出现些莫名其妙的问题。header,nav,article,section,aside,footer{display:}另外excanvas.js是Google为IE6支持canvas元素写的脚本,以后马海祥会跟大家再细说这样的例子,感兴趣的朋友可以去试试。(2)、使用Kill IE6除此之外你还可以使用KILL IE6一族,前提是你的浏览器允许执行JS文件。方法很简单,在你的网站的&/body&之前加上以下代码就可以了:&!--if lte IE 6]&  &script src=&&&&/script&  &![endif]--&上面写的&!--if lte IE 6]&在正常的HTML中属于注释,不会被执行,但在IE中是一个判断语句,所以这些代码只有在IE中才会被识别并加载。lte:就是Less than or equal to的简写,也就是小于或等于的意思。lt :就是Less than的简写,也就是小于的意思。gte:就是Greater than or equal to的简写,也就是大于或等于的意思。gt :就是Greater than的简写,也就是大于的意思。! : 就是不等于的意思,跟javascript里的不等于判断符相同说实话,马海祥不喜欢这个利用JavaScript解决的方案,因为它破坏了我最主要的web应用开发原则:我们不应该使用JavaScript来控制布局。不仅仅是因为这个做法给那些禁用脚本的用户带来了糟糕的用户体验,更重要的是,如果我们希望我们的web应用代码是面向未来,并且维护性高的,那么必须将视图相关部分分离出来。这个方案对在跨浏览器中构建相同的DOM结构很有帮助,也可以确保你的JavaScript和CSS在各个地方运行结果相同,但是这个优势并不能改变我对这个方法的不认同。3、Namespace hack永远不要缺乏使用hack解决问题的能力,在IE中还有其他技术来让浏览器识别不明的标签。这个来自Elco Klingen日志的方法一开始引起了广泛的关注。该技术包含了一个XML形式的命名空间,并使用了含有namespace前缀的元素。例如:&html xmlns=&& xmlns:html5=&&&  &body&  &html5:section&  &!-- content --&  &/html5:section&  &/body&   &/html&前缀html5是纯粹是用于这个例子而且也不是官方支持的,你甚至可以用&foo&作为前缀,结果还是一样。有了前缀之后,IE会识别新的元素,从而可以应用样式。在其他浏览器中一样有效,那么最后,你就成功地在各个浏览器中构建了一样的元素和一样的样式。这个方法的缺陷很明显:你必须在HTML文档中使用XML格式的命名空间,同样,你也需要在css中这么做:html5\:section {   display:  }马海祥点评:这并不是我期望Web开发者编写代码的方式。虽然这是一个非常杰出的解决方案,但是这让应用变得不自然。我不希望看到文件中充满了带命名空间的元素。4、Bulletproof技术(防弹衣技术)说实话,我是第一次接触到这个技术,建议在所有新的HTML5块级元素中增加一个内部的div元素,然后包含一个CSS class,用这个元素来替代HTML元素(类似在里面穿了一件防弹衣),例如:&section&  &div class=&section&&  &!-- content --&  &/div&  &/section&在应用样式的时候,Tantek推荐直接给div增加样式,而不是给新元素增加样式推荐使用:.section {  color:  }而不是:section {   color:   }这个方案的原理是用简单的方式将原来的样式应用方式转移到一个代表了HTML5标签的元素上。由于我一般情况下不会将样式通过标签名的方式应用到元素上,所以马海祥也并完全支持这个建议。马海祥觉得这个方案的缺陷是不同的浏览器构建了不同的DOM结构,那么你必须在编写JavaScript和CSS的时候格外小心。获取子节点或者父节点的时候,不同的浏览器返回的结果可能会不一样。特别是在下面的代码中:&div class=&outer&&  &section&  &div class=&section main&&  &!-- content --&  &/div&&/section&  &/div&5、反向的bulletproof技术还有一些方法,比如尝试使用和Tanteck方案相反的技术,也就是把HTML5元素放在div元素内部,例如:&div class=&section&&  &section&  &!-- content --&  &/section&  &div&这个方案唯一的不同是HTML5元素的位置,其他都一样。喜欢这个技术的支持者认为他的一致性很好(适用于所有的元素,包括&hgroup&)。但是DOM结构的不同让这个方案意义变得不大。他的主要优势是技术上的一致性。6、关于X-UA-Compatible的使用目前绝大多数网站都用以下代码来作为IE8的兼容方法。&meta http-equiv=&X-UA-Compatible& content=&IE=EmulateIE7& &虽然微软将IE向标准迈进了一大步,而事实上IE8还存在一系列渲染的奇怪现象是不争的事实。在X-UA-Compatible中可用的方法有:&meta http-equiv=&X-UA-Compatible& content=&IE=6& &  &meta http-equiv=&X-UA-Compatible& content=&IE=7& &  &meta http-equiv=&X-UA-Compatible& content=&IE=8& &  &meta http-equiv=&X-UA-Compatible& content=&IE=edge& &其中最后一行是永远以最新的IE版本模式来显示网页的。另外加上&meta http-equiv=&X-UA-Compatible& content=&IE=EmulateIE7& &  &meta http-equiv=&X-UA-Compatible& content=&IE=EmulateIE8& &而使用,Emulate模式后则更重视。所以目前来说还是以使用&meta http-equiv=&X-UA-Compatible& content=&IE=EmulateIE7& &为首选。7、通过修改HTML部分来实现我的主要目标是确保我只需要修改HTML部分。这就意味着不需要修改CSS和JavaScript。为什么会有这样的需求?需要修改的Web应用视图越多,你越有可能制造bug。将改变限制到一个视图也就限制了bug的出现,即使出现了bug,也可以减少你查找错误的范围。如果一个视图破相了,我可以知道这是因为我增加了一个section元素,而不是考虑是不是CSS文件修改来带的影响。在研究了所有这些解决方案,并进行一些尝试和设计之后,我回到了Tantek的方案。这是唯一一个只需要修改HTML而不用动CSS和HTML的方案。现在,我在他的方案基础上做了一些改进,来达到我想要的结果。首先,我不会给那些代表HTML5元素的class增加样式(所以我不会使用.section这样的选择器)。我保留了div元素,然后再增加一个带语义的class来应用样式,并作为进行JavaScript操作的钩子。例如,这样的代码:&div class=&content&&  &!-- content --&  &/div&经过改进后:&section&  &div class=&section content&&  &!-- content --&  &/div&  &/section&这样的修改完成后,我依然使用.content作为样式和脚本的入口。这也意味着我不需要修改CSS和JavaScript。然后,为了避免hgroup标签这样的情况,我选择不使用这个标签。我在我已有的所有页面中没有找到任何一个使用了这个标签的。由于hgroup标签只能包含标题元素,如果你确实想要使用这个标签,那么使用hrgoup来包含本身是非常安全的(假设它没有包含其他的块级元素)。我在马海祥博客上花了很多时间来测试比较bulletproof和反向的bulletproof哪个更好一些。我做选择时最主要的决定因素就是反向的bulletproof需要我去增加CSS代码。在那些为HTML5标签创建了DOM节点但是没有应用默认样式的元素来说,div元素里包含了一个HTML5块级元素在很多情况下都会搅乱我的布局,因为创建的DOM节点是行内元素。我不得不明确增加CSS规则来让这个节点变成块级元素从而可以正常布局,这也就违反了我不修改CSS文件的初衷。马海祥博客点评:在我的研究中,我使用了多个页面,然后在这些页面上使用修改过后的bulletproof技术。我分别在简单和复杂的布局中,含有和不含有JavaScript交互进行测试。在每一个例子中,我只需要修改HTML就可以让页面表现正确(不修改JavaScript和CSS)。那么,子节点和父节点的问题怎么办?有趣的事情是我在测试中并没有遇到这样的问题。理由很简单,因为我对代码苛刻的态度。我认真地做了第二遍检查:(1)、标签名和ID不会用于应用样式(只是用class)。(2)、尽量选择常用的CSS选择器并且尽量减少选择器的使用。(3)、JavaScript代码不依赖于特定的DOM结构。(4)、标签名不用于操作DOM。我注意到另一个有趣的事情是我使用了HTML5元素作为容器。而这些新的元素仅仅是作为功能性模块的边界。你应该花费你的大部分时间为内部的元素编写样式和脚本而不是处理各个模块间的样式和脚本。由于马海祥博客的JavaScript和CSS标签都应用在容器的内部,所以一切都显得很顺利。我想这才是一个真正的代码质量高的网站。
采纳率:70%
要什么效果?鼠标移入背景变红?a:hover{ background: color: # }
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 使用命令进入文件中 的文章

 

随机推荐