こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

★★★メタ文字変換後、swfのロードに失敗する件

【OS】Windws XP HomeEdition
【ブラウザ】InternetExplorer7

ご覧頂きまして誠に有難う御座います。
皆様のお知恵を貸して頂ければ幸いです。

現在、下記ソースで『a.swf』ファイルを読み込む様にWEBページの制作をしております。

【参考ソース】
<?xml version="1.0" encoding="shift_jis"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
<link rev="MADE" href="mailto:★" />
<script type="text/javascript" src="swfLoad.js"></script>
<title>★★★</title>
<link rel="index" href="./index.html" />
<link rel="MAIN" href="./main.html" />
<script type="text/javascript">
function getOsName() {
var osName = navigator.userAgent.toUpperCase();
var rtn;
if(osName.indexOf("WIN") >= 0) {
rtn = "Win";
} else if(osName.indexOf("MAC") >= 0) {
rtn = "Mac";
}
return rtn;
}
function getBrowserName() {
var ua = navigator.userAgent.toUpperCase();
var rtn = "";
if (ua.indexOf("MSIE") >= 0){
rtn = "Explorer";
} else if (ua.indexOf("FIREFOX") >= 0) {
rtn = "FireFox";
} else if (ua.indexOf("NETSCAPE") >= 0) {
rtn = "Netscape";
} else if (ua.indexOf("SAFARI") >= 0) {
rtn = "Safari";
} else if (ua.indexOf("OPERA") >= 0) {
rtn = "Opera";
}
return rtn;
}

var dataID;
var osVersion;
var w = screen.width;
var h = screen.height;
if(getOsName()=="Mac"){
h-=30;
}
if(!(getOsName()=="Win"&amp;&amp; getBrowserName()=="Explorer")){
moveTo(0,0);
resizeTo(w,h);
}
if(getOsName()=="Mac"&&(getBrowserName()=="FireFox"||getBrowserName()=="Safari")){
osVersion = 0;
}else{
osVersion = 1;
}
if(w<1280){
dataID = 1;
}else if(w<1600){
dataID = 2;
}else{
dataID = 3;
}

function mailto(str){
location.href="mailto:?subject=URL???N?G?X?g&body="+parseURL(str);
}
function parseURL(url){
var rc = "%0D%0A";
var rtn = "";
var index = 0;
for(var i=0;i<30;i++){
index = url.indexOf(",");

if(index == -1){
break;
}
rtn += url.substr(0,index);
rtn += rc;
url = url.substr(index+1);
}
rtn+=url;
return rtn;
}

</script>
<style type="text/css">
body {
margin:0px;
padding:0px;
background-color:#ffffff;
overflow:hidden;
}
</style>
</head>
<body>
<script type="text/javascript">
swfLoad();
</script>
</body>
</html>

この状態だと当方の意向に沿ったswfの再生が可能なのですが、
W3Cチェッカーにて診断した所『メタ文字(例`>` は `&gt;` )』は変換した方が正式な書き方だと言う事が判りました。
http://www.esitenet.com/htmllint/htmllint.html

しかし、この基準に沿って全ての『メタ文字』を変換した所、今まで正常に再生されていたswfは再生されなくなり、『dateIDは宣言されていません』とエラーが返って来る様になりました。
W3Cチェッカー上での正式な書き方としての点数は上がりましたが、この問題をバランス良く解決するにはどうすれば良いか困惑しております。

上記の問題点がお判りの方がいらっしゃいましたら、是非とも対処方法をご教授願いたく投稿させて頂きます。
大変お手数ですが、何卒よろしくお願い致します。

投稿日時 - 2009-06-03 01:52:19

QNo.5012526

すぐに回答ほしいです

質問者が選んだベストアンサー

> W3Cチェッカーにて診断した所『メタ文字(例`>` は `&gt;` )』は変換した方が正式な書き方だと言う事が判りました。
外部JavaScriptにして回避する方法が一般的だと思います。

<SCRIPT>~</SCRIPT> 内に `XX` を書くときは外部にスクリプトを用意しましょう。
http://www.esitenet.com/htmllint/explain.html#embedded-in-cdata

調べて知りましたが、マーク区間という手法もあるようです。
でも問題があるようなので、使わない方が良さそうですね。

マーク区間 <![XXXX[ ~ ]]> は、多くのブラウザは理解できません。
http://www.esitenet.com/htmllint/explain.html#marked-section

投稿日時 - 2009-06-03 02:31:28

お礼

think49様

お世話になります。非常にご丁寧なご回答を頂きまして、
誠に有難う御座いました!!

な…なるほど…!外部jsにしてしまえば良かったのですね!
恐ろしい程簡単に一発解決が出来て非常に興奮しております!
think49様のご助言、本当に助かりました…有難う御座います><

お蔭様でHTML上はチェックは満点で、当方の意図する動作も可能でした!大満足な結果が得られて嬉しく思います///

ただ、素朴な疑問なのですが、W3Cが定める所と言うのはあくまでもHTML上の文法だけで有って、外部に読み込ませるjsファイル等は特に問題視していないと言う解釈なのでしょうかね…。
外部jsのメタ文字はそのままだと問題有りませんが、うっかり変換してしまうと同じエラーが発生してswfは読み込めませんでした。
となると、原文のまま外部jsにしておいて、そのメタ文字は別に気にする事はないのでしょうかね…。

とにかく本当に助かりました!有難う御座いました!
今後もご承知置きの情報が御座いましたら、ご回答頂戴出来ますと幸いです。本当に有難う御座いました(土下座)

投稿日時 - 2009-06-03 14:44:10

ANo.1

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

#1です。

> ただ、素朴な疑問なのですが、W3Cが定める所と言うのはあくまでもHTML上の文法だけで有って、外部に読み込ませるjsファイル等は特に問題視していないと言う解釈なのでしょうかね…。
そうですね。
jsファイルはJavaScriptでしかありませんので、JavaScriptの文法だけに準拠します。
HTML文書でJavaScriptコードが定義されている場合はHTMLでもあるので、HTMLに準拠した記述にする必要があります。

あと、おそらく勘違いされていると思うのですが、ご質問中のチェッカーはW3Cとは全く関係ない個人サイトで作成されたCGIのコピーです。
オリジナルは下記URLにあります。

Another HTML-lint gateway
http://htmllint.itc.keio.ac.jp/htmllint/htmllint.html

リンク先にあるように「HTML文書の文法をチェックし、採点します」
JavaScriptの文法はチェックしません。

投稿日時 - 2009-06-04 00:59:02

お礼

think49様

お世話になります。この度はご丁寧に有難う御座いました!
そうなんですか…そもそもチェッカー自体間違ってましたか;;;
何ともお恥ずかしい…早速参照URLにて試させて頂きたいと思います★

HTML/JavaScriptの文法に関しては全くの別物としてチェックされる旨良く理解出来ました!本当にご親切に有難う御座います><
今はFLASHのサイズ改変で悩みまくっておりますので、
また博識なご回答者様に期待して新しい質問でも投稿してみます!

少しずつ勉強させて頂きます^^think49様本当に有難う御座います!

投稿日時 - 2009-06-04 01:10:39

あなたにオススメの質問