0

注意:这个问题不是关于在浏览器中检测 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”变量,如果没有闪存,则将其发送到服务器。

4

0 回答 0