中易网

编写Js代码要注意的几条规则

答案:2  悬赏:50  
解决时间 2021-02-27 23:16
编写Js代码要注意的几条规则
最佳答案
2.检查客户端支持对象的能力(渐进式)而不是检查其客户端,测试要使用的对象。
3.访问既有HTML中的内容而不是通过Js添加HTML(行为层与结构层分离)
4.不要使用专有DOM对象(例如IE的document.all)
5.将脚本放进一个.js文件而不是在HTML中到处可见。
6.对运行良好而且不用客户端编程的网站进行改进,而不是首先添加脚本然后添加非脚本的备用方案。
7.代码要保持独立,不要使用可能与其他脚本冲突的全局变量。(可用对象字面量)
全部回答
<br>&lt;!doctype html public &quot;-//w3c//dtd xhtml 1.0 transitional//en&quot; &quot; <a href="http://wenwen.soso.com/z/urlalertpage.e?sp=shttp%3a%2f%2fwww.w3.org%2ftr%2fxhtml1%2fdtd%2fxhtml1-transitional.dtd%22%3e" target="_blank">http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd&quot;&gt;</a><br>&lt;html xmlns=&quot; <a href="http://wenwen.soso.com/z/urlalertpage.e?sp=shttp%3a%2f%2fwww.w3.org%2f1999%2fxhtml%22%3e" target="_blank">http://www.w3.org/1999/xhtml&quot;&gt;</a><br>&lt;head&gt;<br>&lt;meta http-equiv="content-type" content="text/html; charset=utf-8" /&gt;<br>&lt;title&gt;magnifier&lt;/title&gt;<br>&lt;style type="text/css"&gt;<br>#magnifier{<br>width:342px;<br>height:420px;<br>position:absolute;<br>top:100px;<br>left:250px;<br>font-size:0;<br>border:1px solid #000;<br>}<br>#img{<br>width:342px;<br>height:420px;<br>}<br>#browser{<br>border:1px solid #000;<br>z-index:100;<br>position:absolute;<br>background:#555;<br>}<br>#mag{<br>border:1px solid #000;<br>overflow:hidden;<br>z-index:100;<br>}<br>&lt;/style&gt;<br>&lt;script type="text/javascript"&gt;<br>function geteventobject(w3cevent) {&nbsp;&nbsp; //事件标准化函数<br>return w3cevent || window.event;<br>}<br>function getpointerposition(e) {&nbsp;&nbsp; //兼容浏览器的鼠标x,y获得函数<br>e = e || geteventobject(e);<br>var x = e.pagex || (e.clientx + (document.documentelement.scrollleft || document.body.scrollleft));<br>var y = e.pagey || (e.clienty + (document.documentelement.scrolltop || document.body.scrolltop));<br>return { 'x':x,'y':y };<br>}<br>function setopacity(elem,level) {&nbsp;&nbsp; //兼容浏览器设置透明值<br>if(elem.filters) {<br>elem.style.filter = 'alpha(opacity=' + level * 100 + ')';<br>} else {<br>elem.style.opacity = level;<br>}<br>}<br>function css(elem,prop) {&nbsp;&nbsp;&nbsp; //css设置函数,可以方便设置css值,并且兼容设置透明值<br>for(var i in prop) {<br>if(i == 'opacity') {<br>setopacity(elem,prop[i]);<br>} else {<br>elem.style[i] = prop[i];<br>}<br>}<br>return elem;<br>}<br>var magnifier = {<br>m : null,<br>init:function(magni){<br>var m = this.m = magni || {<br>cont : null,&nbsp; //装载原始图像的div<br>img : null,&nbsp;&nbsp; //放大的图像<br>mag : null,&nbsp;&nbsp; //放大框<br>scale : 15&nbsp;&nbsp; //比例值,设置的值越大放大越大,但是这里有个问题就是如果不可以整除时,会产生些很小的白边,目前不知道如何解决<br>}<br>css(m.img,{<br>'position' : 'absolute',<br>'width' : (m.cont.clientwidth * m.scale) + 'px',&nbsp;&nbsp;&nbsp; //原始图像的宽*比例值<br>'height' : (m.cont.clientheight * m.scale) + 'px'&nbsp;&nbsp;&nbsp; //原始图像的高*比例值<br>})<br>css(m.mag,{<br>'display' : 'none',<br>'width' : m.cont.clientwidth + 'px',&nbsp;&nbsp; //m.cont为原始图像,与原始图像等宽<br>'height' : m.cont.clientheight + 'px',<br>'position' : 'absolute',<br>'left' : m.cont.offsetleft + m.cont.offsetwidth + 10 + 'px',&nbsp; //放大框的位置为原始图像的右方远10px<br>'top' : m.cont.offsettop + 'px'<br>})<br>var borderwid = m.cont.getelementsbytagname('div')[0].offsetwidth - m.cont.getelementsbytagname('div')[0].clientwidth;&nbsp; //获取border的宽<br>css(m.cont.getelementsbytagname('div')[0],{&nbsp;&nbsp; //m.cont.getelementsbytagname('div')[0]为浏览框<br>'display' : 'none',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //开始设置为不可见<br>'width' : m.cont.clientwidth / m.scale - borderwid + 'px',&nbsp;&nbsp; //原始图片的宽/比例值 - border的宽度<br>'height' : m.cont.clientheight / m.scale - borderwid + 'px',&nbsp; //原始图片的高/比例值 - border的宽度<br>'opacity' : 0.5&nbsp;&nbsp;&nbsp;&nbsp; //设置透明度<br>})<br>m.img.src = m.cont.getelementsbytagname('img')[0].src;&nbsp;&nbsp; //让原始图像的src值给予放大图像<br>m.cont.style.cursor = 'crosshair';<br>m.cont.onmouseover = magnifier.start;<br>},<br>start:function(e){<br>if(document.all){&nbsp;&nbsp;&nbsp; //只在ie下执行,主要避免ie6的select无法覆盖<br>magnifier.createiframe(magnifier.m.img);<br>}<br>this.onmousemove = magnifier.move;&nbsp; //this指向m.cont<br>this.onmouseout = magnifier.end;<br>},<br>move:function(e){<br>var pos = getpointerposition(e);&nbsp; //事件标准化<br>this.getelementsbytagname('div')[0].style.display = '';<br>css(this.getelementsbytagname('div')[0],{<br>'top' : math.min(math.max(pos.y - this.offsettop - parseint(this.getelementsbytagname('div')[0].style.height) / 2,0),this.clientheight - this.getelementsbytagname('div')[0].offsetheight) + 'px',<br>'left' : math.min(math.max(pos.x - this.offsetleft - parseint(this.getelementsbytagname('div')[0].style.width) / 2,0),this.clientwidth - this.getelementsbytagname('div')[0].offsetwidth) + 'px'&nbsp;&nbsp; //left=鼠标x - this.offsetleft - 浏览框宽/2,math.max和math.min让浏览框不会超出图像<br>})<br>magnifier.m.mag.style.display = '';<br>css(magnifier.m.img,{<br>'top' : - (parseint(this.getelementsbytagname('div')[0].style.top) * magnifier.m.scale) + 'px',<br>'left' : - (parseint(this.getelementsbytagname('div')[0].style.left) * magnifier.m.scale) + 'px'<br>})<br>},<br>end:function(e){<br>this.getelementsbytagname('div')[0].style.display = 'none';<br>magnifier.removeiframe(magnifier.m.img);&nbsp; //销毁iframe<br>magnifier.m.mag.style.display = 'none';<br>},<br>createiframe:function(elem){<br>var layer = document.createelement('iframe');<br>layer.tabindex = '-1';<br>layer.src = 'javascript:false;';<br>elem.parentnode.appendchild(layer);<br>layer.style.width = elem.offsetwidth + 'px';<br>layer.style.height = elem.offsetheight + 'px';<br>},<br>removeiframe:function(elem){<br>var layers = elem.parentnode.getelementsbytagname('iframe');<br>while(layers.length &gt;0){<br>layers[0].parentnode.removechild(layers[0]);<br>}<br>}<br>}<br>window.onload = function(){<br>magnifier.init({<br>cont : document.getelementbyid('magnifier'),<br>img : document.getelementbyid('magnifierimg'),<br>mag : document.getelementbyid('mag'),<br>scale : 3<br>});<br>}<br>&lt;/script&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&lt;div id="magnifier"&gt;<br>&lt;img src="<strong>在这里输入你的照片源地址或链接</strong> /&gt;<br>&lt;div id="browser"&gt;&lt;/div&gt;<br>&lt;/div&gt;<br>&lt;div id="mag"&gt;&lt;img id="magnifierimg" /&gt;&lt;/div&gt;<br>&lt;/body&gt;<br>注意粗体,关于标签我不太懂
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
哪里可以买到防身物品
电表3×1.5﹙6A﹚与互感器300/5A的匹配不?
隐形狂人 谁有 百度云
牛津大学柯律格编写的《art of china 》其主
八里荒村地址在什么地方,想过去办事
凯帝娱乐广场怎么去啊,有知道地址的么
为什么直销是单层次直销与多层次直销
卡琪屋童装(月光路)地址在什么地方,想过去办
后爱气血汤多少钱一盒
笋径这个地址在什么地方,我要处理点事
你好,我想在安装打包程序前,安装另一个exe
谁有名侦探柯南全集呀 要中文版的 带字幕的
杭州汽车南站到武义最早一班车是几点的
大家怎么理解:骏马面前无沟壑,怂人面前全是
一辆五菱宏光跑到十万公里了:11年的车、发动
推荐资讯
税务局窗口的员工一般多少工资啊
锅炉维修,在什么样情况下,不需要办理开工告
干沟村村地址有知道的么?有点事想过去
每天游泳的最佳时长是多少呢?
我非常想应聘人事文员这块,但是我没这方面的
快贷提前结清能马上借出来吗
平沿路/Y004(路口)怎么去啊,有知道地址的么
新澳海底世界海豚表演时间
几何画板没有自定义工具,怎么办
我是菜市场的日杂店!请问可以搞促销吗?
好运姐, 女警, 金克丝。 都什么皮肤好看推
瑞滋西餐厅怎么去啊,有知道地址的么
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?