目录
随着项目规模的增大,协作开发也越来越长见,协作开发时间久了就会遇到一个恶心的文件冲突问题。
假设一个HTML文件引用了两个外部JS文件,而这两个外部JS文件你没有修改的权限,你只有HTML文件的修改权限,
两个外部JS文件都定义了window.onload事件。代码假设如下:
这样的话,在a.js定义的window.onload事件会被b.js定义的window.onload事件覆盖掉。
如果我们想a.js和b.js中的window.onload都能正常执行,该怎么办呢???
我们知道JS有这样的特性:后面定义的同名变量会覆盖掉前面定义的同名变量的值而不报错,还有可以自定义变量 其值为系统函数的引用。
得到的变量跟系统函数的功能一样。
好了,我们就利用JS的这个特性,有的人认为这是JS设计的Bug,至少在这个时候这个特性还是有点用处的。
我们新改的代码如下:
这样就顺利解决了代码文件的冲突问题。是不是觉得很新奇呢?
CSS文件样式冲突也可以使用这种方法解决。
假设你的HTML加载了a.css b.css。 b.css中的某一个样式规则覆盖了a.css中的样式。而你只有修改a.css的权限,没有修改b.css的权限
而且css文件加载顺序必须是先a.css然后才b.css .这时候该怎么办呢??
不要慌!这时候你可以按照上面JS文件冲突的思路解决这个问题。
因为CSS也有这样的特性:后面定义的规则覆盖前面定义的同名规则。
这时候你只需要在b.css后面新建一个style 里面写上你想要覆盖的CSS规则 里面写新的样式规则即可。
很激动有木有?
今天就先到这里吧。
首页 web前端 html教程 利用JS和CSS的覆盖特性来解决文件冲突问题_html/css_WEB-ITnose

利用JS和CSS的覆盖特性来解决文件冲突问题_html/css_WEB-ITnose

Jun 24, 2016 am 11:50 AM

随着项目规模的增大,协作开发也越来越长见,协作开发时间久了就会遇到一个恶心的文件冲突问题。

假设一个HTML文件引用了两个外部JS文件,而这两个外部JS文件你没有修改的权限,你只有HTML文件的修改权限,

两个外部JS文件都定义了window.onload事件。代码假设如下:

<script type="text/javascript" src="a.js"></script><script type="text/javascript" src="b.js"></script>
登录后复制

 a.js的文件内容:

window.onload=function(){alert("这是a.js的");}
登录后复制



b.js的文件内容:

window.onload=function(){alert("这是b.js的");} 
登录后复制

这样的话,在a.js定义的window.onload事件会被b.js定义的window.onload事件覆盖掉。

如果我们想a.js和b.js中的window.onload都能正常执行,该怎么办呢???

我们知道JS有这样的特性:后面定义的同名变量会覆盖掉前面定义的同名变量的值而不报错,还有可以自定义变量 其值为系统函数的引用。

得到的变量跟系统函数的功能一样。

好了,我们就利用JS的这个特性,有的人认为这是JS设计的Bug,至少在这个时候这个特性还是有点用处的。

我们新改的代码如下:


<pre name="code" class="html"><script type="text/javascript" src="a.js"></script><script type="text/javascript"></script>
登录后复制
<span style="font-family: Arial, Helvetica, sans-serif;">var aa=window.onload;//得到已经定义的</span><span style="font-family: Arial, Helvetica, sans-serif;">window.onload事件处理程序的句柄或者说引用 这里面保存了a.js定义的</span><span style="font-family: Arial, Helvetica, sans-serif;">window.onload事件的逻辑操作。</span>
登录后复制
<span style="font-family: Arial, Helvetica, sans-serif;">window.onload=null;//把</span><span style="font-family: Arial, Helvetica, sans-serif;">window.onload的事件处理程序注销,这样系统就不会再执行</span><span style="font-family: Arial, Helvetica, sans-serif;">window.onload函数了。</span>
登录后复制
登录后复制
<span style="font-family: Arial, Helvetica, sans-serif;"></span>
登录后复制
<script type="text/javascript" src="b.js"></script><script type="text/javascript"></script>
登录后复制
登录后复制
登录后复制
<pre name="code" class="html"><span style="font-family: Arial, Helvetica, sans-serif;">var bb=window.onload;//得到已经定义的</span><span style="font-family: Arial, Helvetica, sans-serif;">window.onload事件处理程序的句柄或者说引用 这里面保存了b.js定义的</span><span style="font-family: Arial, Helvetica, sans-serif;">window.onload事件的逻辑操作。</span>
登录后复制
<span style="font-family: Arial, Helvetica, sans-serif;">window.onload=null;//把</span><span style="font-family: Arial, Helvetica, sans-serif;">window.onload的事件处理程序注销,这样系统就不会再执行</span><span style="font-family: Arial, Helvetica, sans-serif;">window.onload函数了。</span>
登录后复制
登录后复制
登录后复制
登录后复制
window.onload=function(){aa();bb();//重新注册<span style="font-family: Arial, Helvetica, sans-serif;">window.onload事件,执行的代码逻辑为a.js和b.js中定义的代码操作。</span>}
登录后复制


这样就顺利解决了代码文件的冲突问题。是不是觉得很新奇呢?


CSS文件样式冲突也可以使用这种方法解决。

假设你的HTML加载了a.css b.css。 b.css中的某一个样式规则覆盖了a.css中的样式。而你只有修改a.css的权限,没有修改b.css的权限

而且css文件加载顺序必须是先a.css然后才b.css .这时候该怎么办呢??

不要慌!这时候你可以按照上面JS文件冲突的思路解决这个问题。

因为CSS也有这样的特性:后面定义的规则覆盖前面定义的同名规则。

这时候你只需要在b.css后面新建一个style 里面写上你想要覆盖的CSS规则 里面写新的样式规则即可。

很激动有木有?

今天就先到这里吧。



本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验? 公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验? Mar 04, 2025 pm 12:32 PM

公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?

如何使用HTML5表单验证属性来验证用户输入? 如何使用HTML5表单验证属性来验证用户输入? Mar 17, 2025 pm 12:27 PM

如何使用HTML5表单验证属性来验证用户输入?

如何高效地在网页中为PNG图片添加描边效果? 如何高效地在网页中为PNG图片添加描边效果? Mar 04, 2025 pm 02:39 PM

如何高效地在网页中为PNG图片添加描边效果?

HTML5中跨浏览器兼容性的最佳实践是什么? HTML5中跨浏览器兼容性的最佳实践是什么? Mar 17, 2025 pm 12:20 PM

HTML5中跨浏览器兼容性的最佳实践是什么?

我如何使用html5&lt; time&gt; 元素以语义表示日期和时间? 我如何使用html5&lt; time&gt; 元素以语义表示日期和时间? Mar 12, 2025 pm 04:05 PM

我如何使用html5&lt; time&gt; 元素以语义表示日期和时间?

&lt; datalist&gt;的目的是什么。 元素? &lt; datalist&gt;的目的是什么。 元素? Mar 21, 2025 pm 12:33 PM

&lt; datalist&gt;的目的是什么。 元素?

&gt; gt;的目的是什么 元素? &gt; gt;的目的是什么 元素? Mar 21, 2025 pm 12:34 PM

&gt; gt;的目的是什么 元素?

&lt; meter&gt;的目的是什么。 元素? &lt; meter&gt;的目的是什么。 元素? Mar 21, 2025 pm 12:35 PM

&lt; meter&gt;的目的是什么。 元素?

See all articles