一种限制JavaScript/CSS范围的方法
A way of limiting the scope the JavaScript/CSS?
问题声明:我需要找到一个解决方案,让JavaScript和CSS不会与HTML页面上运行的其他脚本(小部件)发生冲突。
建议的解决方案有人知道如何限制JavaScript的作用域吗?我对有两种了解
- 使用IFrame加载小部件
- 使用Frameset加载小部件
使用这两个选项,它可以永久消除任何类型的JavaScript或CSS冲突。有人知道其他办法吗?
当在同一页面上包含多个小部件/插件/库时,它们之间总是有冲突的可能性。显然,唯一万无一失的解决方案是使用iframe,但由于seo目的,或者小部件需要做的事情比iframe中能做的更多,这通常并不理想。
没有办法保证一个小部件不会与另一个发生冲突,除非你自己编写小部件时考虑到了这种可能性(当然,除了使用iframe)
名称间距是避免css和js之间冲突的常用技术。从css的角度来看,这只是意味着在小部件的容器元素上使用一个id或类,并在插件使用的每个样式中使用该类(但请注意,由于css的性质,这并不能绝对保证某些东西不会发生冲突。)在js中,这意味着将所有方法和变量存储在只能从window
上的单个唯一属性访问的私有范围内,类似于jquery定义window.jQuery
的方式。
.myWidget .header {...}
.myWidget .footer {...}
.myWidget .header a {...}
和
(function(window){
function doSomething() {...}
function doSomethingElse() {...}
window.myWidget = {
fn1: doSomething,
fn2: doSomethingElse
};
}(window);
myWidget.fn1();
现在可以开始使用一些非常酷的东西了@KevinB对当前和上一代浏览器的回答是正确的(+1'ed),但我敦促您开始研究web组件,它将完全按照您的意愿隔离您的"小部件"。
好消息是,您现在可以使用谷歌的Polymer库/polyfill从今天开始使用web组件。
相关文章:
- CSS-如何定位内容数据标题
- 正在全局范围中查找JavaScript函数
- 窗口大小html css
- 如果文本字段为空,则使用JavaScript应用CSS样式
- 动画.CSS重播
- 如何通过数组更新角度子范围
- 有没有一种方法可以防止img get请求使用css或js发生
- CSS表格:从列平移到整个表格宽度
- CKEditor-我在editor.css中的风格是't
- 单击更改图标并通过javascript添加一个css类
- 将自定义css保持在角度范围内
- 通过嵌套类将CSS样式表的范围限定为仅一个DIV
- 如何约束内联CSS的范围
- /deep/combinator视频范围蓝色css未正确显示
- Firefox的替代HTML/CSS不支持输入范围
- 引导范围滑块css错误
- 根据数值范围更改CSS样式
- 使用jQuery和CSS选择元素范围
- HTML范围元素改变CSS过滤器
- 一种限制JavaScript/CSS范围的方法