1

我在 HTML 页面中嵌入了一个动态生成的 SVG。它正在显示,但有不需要的水平和垂直滚动条,v. 烦人!通过检查 Chrome 浏览器中的元素,我发现它有一个 <head> 和 <body> 标签,这对于 SVG 来说是不正常的!如果我更改 ''data'' 属性以包含传统的静态 SVG,则浏览器中不会添加任何 head 或 body 标记。

我从 Apache 服务器上的 PHP 页面提供 SVG XML,并将其作为对象嵌入到标记中,如下所示:

<object id="map" type="image/svg+xml" data="mapphp.svg"></object>

浏览器显然检测到这不是一个传统的 SVG 文件,我只能假设它会将其视为 Content-Type:text/html 并添加 head 和 body 标记以标准化它认为写得不好的标记。

我什至尝试用 .htaccess 屏蔽 PHP 文件并用 mod_headers.c 覆盖标题

<IfModule mod_rewrite.c>
  RewriteCond %{REQUEST_URI} mapphp.svg [NC]
  RewriteRule ^(.*)$ map.php?r=$1 [L,QSA]
</IfModule>

<ifModule mod_headers.c>
  <filesMatch "mapphp\.svg$">
    Header set ETag "813c0-3a0-4e7c49319ad82"
    Header unset Content-Type
    Header unset X-Powered-By
    Header unset Server
  </filesMatch>
</ifModule>

然而,它似乎仍然将我的 SVG 视为 HTML 文档,并给它一个 <head> 和 <body> 标记。

PS 发布此消息后我要睡觉了,所以如果我直到明天才回复,请不要生气。我将不胜感激任何帮助。

4

1 回答 1

3

在进行任何输出之前,在内部map.php包含以下标头。header("Content-type: image/svg+xml");

于 2013-10-02T21:37:52.667 回答