URLがSWFを指しているかどうかを検出する方法
-
06-07-2019 - |
質問
URLがSWFかJPGかを判断する方法(JavaScriptを使用するのが望ましい)はありますか?
明白な答えは、" .jpg"のファイル名を盗聴することです。または" .swf"しかし、サーバーによって動的に決定され、通常は多くのパラメーターを持ち、通常は拡張機能を含まないバナーを扱っています。
そのため、最初にファイルをロードしてから、何らかの方法でそれを読んでSWFかJPGかを判断してから配置できるかどうか疑問に思います。JPGとSWFを表示する必要があるJavaScriptコードは非常に違う。
ありがとう!
解決
動的なimgタグを作成することにより、javascriptを使用して画像かどうかを検出できます。
function isImage(url, callback) {
var img = document.createElement('img');
img.onload = function() {
callback(url);
}
img.src = url;
}
そして次のように呼び出します:
isImage('http://animals.nationalgeographic.com/staticfiles/NGS/Shared/StaticFiles/animals/images/primary/bald-eagle-head.jpg', function(url) { alert(url + ' is a image'); });
更新 このバージョンは常にブール値でコールバックを実行します。
function isImage(url) {
var img = document.createElement('img');
img.onload = function() {
isImageCallback(url, true);
}
img.onerror = function() {
isImageCallback(url, false);
}
img.src = url;
}
function isImageCallback(url, result) {
if (result)
alert(url + ' is an image');
else
alert(url + ' is not an image');
}
isImageCallback関数にロジックを入力します。
他のヒント
次のように言って、Sijinの答えを拡張します。
URLへのHTTP HEADリクエストを使用して、リソースのMIMEタイプを調べることができます。君は 残りのファイルをそのままダウンロードする必要はありません。
完全に未検証、基本的には単なるアイデア:
function isImage(url)
{
var http = getHTTPObject();
http.onreadystatechange = function ()
{
if (http.readyState == 4)
{
var contentType = http.getResponseHeader("Content Type");
if (contentType == "image/gif" || contentType == "image/jpeg")
return true;
else
return false;
}
}
http.open("HEAD",url,true);
http.send(null);
}
function getHTTPObject()
{
if (window.XMLHttpRequest)
{
return new XMLHttpRequest();
}
else
{
if (window.ActiveXObject)
{
return new ActiveXObject("Microsoft.XMLHTTP");
}
}
return false;
}
お持ちの正確なセットアップがわかりませんが、HTTPレスポンスを使用してmimeタイプを確認し、イメージとフラッシュを判別できますか?
URLに拡張子がない場合、サーバーからファイルを要求せずに通知する方法はありません。
所属していません StackOverflow