-1

将此行代码添加到我的 javascript 文件时出现错误,

解析错误:语法错误,意外的 T_STRING

var data = "<?xml-stylesheet type='text/css' href='css/main.css' ?>"+
        "<svg xmlns='http://www.w3.org/2000/svg' width='800' height='800'>"+
        "<foreignObject width='100%' height='100%'>" +
         "<div xmlns='http://www.w3.org/1999/xhtml'>"+$("#mainbody").html() 
             + "</div></foreignObject></svg>";

当我删除这部分时问题显示:

"<?xml-stylesheet type='text/css' href='css/main.css' ?>"

而且我在另一个文件中有相同的行,但完全没有问题

可能是什么问题呢?

4

1 回答 1

1

这是一个 PHP 错误。你需要对<?or?>序列进行转义,这对 PHP 来说当然有特殊的意义。

但是,即使您修复了该问题并让 PHP 满意,您尝试做的事情也不会奏效。当您尝试将某个 DOM 节点的“html”属性设置为data您正在定义的这个变量时,您会得到一个不同的错误,指出 DOM 字符串格式错误(或者,可能<?xml-stylesheet?>会忽略伪指令)。这是因为它出现在XML 文档xml-stylesheet的开头,而不是在可以分配给元素属性的那种文本 DOM 片段中。它在显示 SVG文档时生效,而不是在 HTML 页面中的 SVG 片段上。html

你想在这里完成什么?该main.css文件包含特定于该 SVG 片段的 css 声明?为什么不在 HTML 文件的 HEAD 中包含 CSS 文件?

另一种可能的解决方案是将 SVG 外部化为一个单独的文件,并使用 IMG 元素或其他东西包含它——在这种情况下,<?xml-stylesheet?>伪指令就可以正常工作。但这不会让你做你似乎试图用这件事做的$("#mainbody")事情——这就是……什么?以某种方式将 HTML 包装在 SVG 中?为什么?

于 2013-03-21T16:30:50.823 回答