3

私のJavascriptコードには、次の行があります。

document.write('<style type="text/css">@import "style_mobile.css";</style>');

Netbeans はこれを嫌うようで、次のようなエラー メッセージが表示されます。

XHTML 要素「style」は、このコンテキストでは XHTML 要素「script」として許可されていません。

違いが生じるかどうかを確認するために、外側に二重引用符を使用するように行を変更しました。

document.write("<style type=\"text/css\">@import \"style_mobile.css\";</style>");

エラーをこの警告に変更することに成功しただけです:

要素「type」に関連付けられた属性「{1}」には、開始引用符が必要です

私が知る限り、一重引用符も二重引用符もコードが機能するという事実に影響を与えないため、なぜ Netbeans がそれを問題にしているのかわかりません。Netbeans の警告を無視することもできますが、できるだけクリーンで標準に準拠したコードを作成したいと考えています。私のコード全体に上記のような行があり、黄色と赤のマーカーがすべてあるのは目障りです。

私の現在のドキュメントの種類は次のとおりです。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

document.write私がやろうとしていることを達成するために、関数の正しい形式は何ですか? または、コードは正当なものですか? その場合、Netbeans に私を放っておくように指示する方法はありますか?

4

2 に答える 2

1

この問題を解決するにはdocument.write、Javascript コードを使用して完全に使用するのをやめ、ノードと要素をドキュメント ツリーに追加しました。

したがって、代わりに:

document.write('<style type="text/css">@import "style_mobile.css";</style>');

...代わりにこれを使用します:

var css = '@import "style_mobile.css";'
var header = document.getElementsByTagName('head')[0];
var style = document.createElement('style');
style.setAttribute('type', 'text/css');
style.appendChild(document.createTextNode(css));
header.appendChild(style);

はい、それはより多くのコード行と作業ですが、より安定した信頼性の高いコードになると思います.

于 2013-08-30T05:12:00.863 に答える
1

何らかの理由でコメントを許可していないので、必ずしも答えではないと思いますが、このコメントをここに入れます。

まず、示されている document.write() は、すべての二重引用符で機能するわけではありません。たとえば、二重引用符で文字列全体を引用してから、完全な文字列内の 2 つのサブ引用符に単一引用符を使用します。

document.write() の内容に関する限り、私は @include に精通していませんが、あなたがやろうとしていることを突き刺します:

document.write ("<link rel='stylesheet' type='text/css' href='style_mobile.css'>");
于 2013-07-27T07:43:57.737 に答える