注意:这个问题不是关于在浏览器中检测 flash。
看到这个http://hasseg.org/stuff/fontList/example.html
我想通过 javascript xml http 请求将字体列表发送到服务器(php 页面)。
字体列表仅在浏览器中存在 flash 时生成。如果没有 flash,则不会生成字体列表。
在闪存存在的情况下,我能够成功地将字体列表发送到服务器。但是,如果不存在 flash,我将无法发送一些文本,例如“noflash”而不是字体。
现在,如果不存在闪存,我想向服务器发送文本“noflash”。
索引.html
<script type="text/javascript">
function sendfont(s){
s = s.toString(" ");
send = "fontlist="+encodeURIComponent(s);
ajax("logic.php",send);
}
function ajax(url, send){
var ar = null;
try{
ar=new XMLHttpRequest();
}catch(e){
if(window.ActiveXObject){
var ax= ['Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP','Microsoft.XMLHTTP'],i=ax.length;
while(--i){
try{
ar=new ActiveXObject(ax[i]);
break;
}catch(e){
}
}
}
if(ar==null){
alert("Update your browser.");
}
}
ar.open("POST",url,true);
ar.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
ar.onreadystatechange=function(){
if(ar.readyState==4){
if(ar.status==200||ar.status==304){
document.body.innerHTML=ar.responseText.replace(/\n/g, "<br>");
};
}
}
ar.send(send);
};
function populateFontList(fontArr)
{
var i = 0, xf = [];
for (var key in fontArr)
{
var f = fontArr[key];
// trim
f = f.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
if (f.match(/[_\-\s]Italic$/)
|| f.match(/[_\-\s](Demi)?[Bb]old$/)
|| f.match(/[_\-\s]Medium$/)
|| f.match(/[_\-\s](Ultra)?[Ll]ight$/)
|| f.match(/[_\-\s]Condensed$/)
|| f.replace(/\s*Regular$/, '')
)xf[i++] = f;
}
sendfont(xf);
}
</script>
<object id="fontListSWF" name="fontListSWF" type="application/x-shockwave-flash" data="FontList.swf" width="1" height="1"><param name="movie" value="FontList.swf">
<embed src="FontList.swf" width="1" height="1"></embed>
</object>
我想用“noflash”替换“xf”变量,如果没有闪存,则将其发送到服务器。