如何像CSS修饰元素那样,直接禁用废除某个元素?(比如audio元素不去访问音频文件)
-
- 帖子: 2284
- 注册时间: 2013-05-26 6:58
- 系统: Debian 9
如何像CSS修饰元素那样,直接禁用废除某个元素?(比如audio元素不去访问音频文件)
如何像CSS修饰元素那样,直接禁用废除某个元素?(比如audio元素不去访问音频文件)
- AutoXBC
- 帖子: 1744
- 注册时间: 2007-10-23 12:54
Re: 如何像CSS修饰元素那样,直接禁用废除某个元素?(比如audio元素不去访问音频文件)
如果不能编译浏览器修改源码,那一般只能通过用户脚本(user js)进行设置,不同浏览器对用户脚本的支持度不同,能达成的效果也有很大差异。
彻底禁用某一标签,可以将其删除,用 removeChild 方法,或者将其转化为无对应行为的标签。仅仅修改某个标签的行为,可以寻找对应行为在 js 语言中对应的事件,修改事件行为。
audio元素不去访问音频文件比较笼统,看不出你的实际目的,给出代码比较困难。比如我一般会把 HTML5 的 Video 元素转化为 embed 元素,加载我自己的 flash 播放器,以此来解决 Opera 浏览器对 H.264 支持不佳的问题,具体代码稍长有几百行,不过稍懂 js 就能上手。
彻底禁用某一标签,可以将其删除,用 removeChild 方法,或者将其转化为无对应行为的标签。仅仅修改某个标签的行为,可以寻找对应行为在 js 语言中对应的事件,修改事件行为。
audio元素不去访问音频文件比较笼统,看不出你的实际目的,给出代码比较困难。比如我一般会把 HTML5 的 Video 元素转化为 embed 元素,加载我自己的 flash 播放器,以此来解决 Opera 浏览器对 H.264 支持不佳的问题,具体代码稍长有几百行,不过稍懂 js 就能上手。
-
- 帖子: 2284
- 注册时间: 2013-05-26 6:58
- 系统: Debian 9
Re: 如何像CSS修饰元素那样,直接禁用废除某个元素?(比如audio元素不去访问音频文件)
"彻底禁用某一标签,可以将其删除"AutoXBC 写了:如果不能编译浏览器修改源码,那一般只能通过用户脚本(user js)进行设置,不同浏览器对用户脚本的支持度不同,能达成的效果也有很大差异。
彻底禁用某一标签,可以将其删除,用 removeChild 方法,或者将其转化为无对应行为的标签。仅仅修改某个标签的行为,可以寻找对应行为在 js 语言中对应的事件,修改事件行为。
audio元素不去访问音频文件比较笼统,看不出你的实际目的,给出代码比较困难。比如我一般会把 HTML5 的 Video 元素转化为 embed 元素,加载我自己的 flash 播放器,以此来解决 Opera 浏览器对 H.264 支持不佳的问题,具体代码稍长有几百行,不过稍懂 js 就能上手。
基本上就是我想要的"实际效果"
"实际目的"是有些时候不需要播放音频文件,所以想禁用掉那些元素,避免无意义的随机读取压力
- AutoXBC
- 帖子: 1744
- 注册时间: 2007-10-23 12:54
Re: 如何像CSS修饰元素那样,直接禁用废除某个元素?(比如audio元素不去访问音频文件)
如果浏览器提供按需加载,那要比完全删除标签好一些,在需要时还可以播放。
如果确实要删除标签,可以用这样的代码
大概意思是这样,未经严格调试。具体怎么在你的浏览器里加载这个代码,可以搜索用户脚本的用法。
如果确实要删除标签,可以用这样的代码
代码: 全选
['DOMNodeInserted','DOMContentLoaded'].forEach(function(str){
window.addEventListener( str , function (evt) {
var target = evt.target ;
var tag2rm = 'audio' ;
if(target.tagName && target.tagName.toLowerCase() == tag2rm )
target.parentNode.removeChild(target);
else {
if(target.querySelectorAll)
{
var ndlst = target.querySelectorAll(tag2rm) ;
Array.prototype.slice.call(ndlst).forEach(function(nd){
nd.parentNode.removeChild(nd);
});
}
}
});
});