Javascript 检测html代码中的flash对象
我需要检测页面是否包含flash对象,我不是说浏览器支持flash。Javascript 检测html代码中的flash对象,javascript,html,object-tag,Javascript,Html,Object Tag,我需要检测页面是否包含flash对象,我不是说浏览器支持flash。 你找到类似的东西了吗?我的方法是通过文件扩展名将flash对象与其他对象(如图片和视频)区分开来。这是唯一不能忽略的事情。你可以在下面找到一些案例 function getFileExtension(filename) { //Since you only looking for swf. return filename.substr(filename.length - 3).toUpperCase();
你找到类似的东西了吗?我的方法是通过文件扩展名将flash对象与其他对象(如图片和视频)区分开来。这是唯一不能忽略的事情。你可以在下面找到一些案例
function getFileExtension(filename) {
//Since you only looking for swf.
return filename.substr(filename.length - 3).toUpperCase();
//return filename.split('.').pop().toUpperCase();
}
function isSwfFile(filename) {
if ( getFileExtension(filename) == "SWF") {
return true;
}
return false;
}
function containsSWFObjects() {
//Try to get all OBJECT tags
var objects = document.getElementsByTagName('object');
var i ,j ;
for (i=0; i < objects.length; i++) {
//Check for <object width="400" height="400" data="helloworld.swf"></object>
var data = objects[i].getAttribute("data");
if (data) {
if (isSwfFile(data)) {
console.log(data);
return true;
}
}
//Check for <param name="movie" value="file.swf"/>
//and <param name="SRC" value="bookmark.swf">
var param = objects[i].getElementsByTagName('param');
for (j=0; j < param.lenght; j++) {
var name = param[j].getAttribute("name").toUpperCase();
if (name) {
if ( name == "MOVIE" || name == "SRC") {
if ( isSwfFile( param[j].getAttribute("value") ) ) {
console.log(param[j].getAttribute("value"));
return true;
}
}
}
}
}
//Check for EMBED tag
var embed = document.getElementsByTagName('embed');
for (i=0; i < len; i++) {
//Check for <embed src="file.swf">
var src = embed[i].getAttribute('src');
if (src) {
if (isSwfFile(src)) {
console.log(src);
return true;
}
}
}
return false;
}
if ( containsSWFObjects() ) {
console.log("Contain SWFs");
} else {
console.log("Doesn't contain SWFs");
}
函数getFileExtension(文件名){
//因为你只是在找swf。
返回filename.substr(filename.length-3).toUpperCase();
//返回文件名.split('.').pop().toUpperCase();
}
函数isSwfFile(文件名){
if(getFileExtension(filename)=“SWF”){
返回true;
}
返回false;
}
函数包含wfObjects(){
//尝试获取所有对象标记
var objects=document.getElementsByTagName('object');
varⅠ,j;
对于(i=0;i您可以使用jQuery而不是document.queryselectoral,这可能会稍微慢一点,但可能适用于所有浏览器。您可以在页面内搜索
对象
标记。正确!我搜索swf、object、embed、iframe。但是有什么保证,它的flash可能也代表其他东西,比如iframe可能会显示map。它们也可能会被注释。我希望有一种js方法可以像我们有document.scripts的脚本那样做这件事。
function containsSWFObjects() {
var s,
selectors = [
'object param[name="movie"][value*=".swf"]',
'object param[name="src"][value*=".swf"]',
'embed[src*=".swf"]',
'object[data*=".swf"]'
];
while (s = selectors.pop()) {
if (document.querySelectorAll(s).length) {
return true;
}
}
return false;
}