페이지에 플래시 객체가 있는지 감지해야합니다. 브라우저 플래시 지원을 의미하지 않습니다. 비슷한 것을 분류 했습니까?HTML 코드의 플래시 객체 감지
0
A
답변
0
내 접근 방식은 사진 및 비디오와 같은 다른 파일 과 플래시 개체를 파일 확장자로 구분하는 것입니다. 그것은 생략 될 수없는 유일한 것입니다. 아래에서 몇 가지 사례를 발견 할 수 있습니다.
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");
}
+0
'jQuery' 지식을 가진 사람이 코드를 축소 할 수 있기를 바랍니다. –
1
modern browsers에 대한 giannis christofakis' answer의 짧은 버전 (IE9 +에서 작동한다) :
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;
}
대신 약간 느려질 수 있습니다있는 document.querySelectorAll의 jQuery를 사용할 수 있지만, 아마도 모든 브라우저에서 작동 .
아마도 'OBJECT' 태그에 대한 페이지 내에서 검색 할 수 있습니다. –
이 맞습니다! swf, object, embed, iframe을 검색합니다.하지만 플래시가 iframe과 같은 다른 것들을 나타낼 수도 있다는 보장은 무엇입니까? 그들은 주석을 달 수도 있습니다. 나는이 일을하기위한 js 방법이 있기를 바랍니다. 스크립트의 경우 document.script가 있습니다. – narek