3

在我的 Javascript 代码中,我有以下行:

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

Netbeans 似乎讨厌这个,并给我一条错误消息,上面写着:

在此上下文中,XHTML 元素“样式”不允许作为 XHTML 元素“脚本”。

只是为了看看它是否会有所作为,我将行更改为在外部使用双引号:

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

仅成功地将错误更改为此警告:

与元素“类型”关联的属性“{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 向我抛出警告和错误的情况下这样做?或者代码是否合法,在这种情况下,我有办法告诉 Netbeans 不要管我吗?

4

2 回答 2

1

出于某种原因,它不允许我发表评论,所以即使我不相信它一定是答案,我也会把这个评论放在这里。

首先,显示的 document.write() 不适用于所有双引号。用双引号引用整个字符串,然后在整个字符串中为两个子引号使用单引号。

就 document.write() 的内容而言,我不熟悉@include,但我会尝试一下我认为您正在尝试做的事情:

document.write ("<link rel='stylesheet' type='text/css' href='style_mobile.css'>");
于 2013-07-27T07:43:57.737 回答
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 回答