raphaeljs ライブラリを使用してさまざまな SVG 要素を描画するページを作成しましたが、Safari でいくつかの問題が発生しています。
画像を描画し、クリッピング パスを使用して特定の領域をマスクしています。ユーザーは、これらの画像をクリックして、背後にある他の画像に移動できます。
これは、Firefox と Chrome、さらには IE でも期待どおりに機能します。しかし、Safari では画像をクリックすることができません。Safari でクリッピング パスが機能しないようです。
この質問を通じて、Safari の content-type は html5 パーサーを使用していないため、「application/xhtml+xml」に設定する必要があることを発見しました。
これを私のページの一番上に置くという提案を試みました...
<?php
header('Content-type: application/xhtml+xml');
?>
...しかし、ブラウザはhtmlファイルを出力するだけです。
chromeやfirefoxのように、Safariに埋め込まれたSVGを適切に描画させるために必要なDoctypeは何ですか?
これは私がSVG画像を描画する方法であり、クロムとFirefoxで正常に動作します
function myDraw(path, url, x, y, w, h, id){
//create clipPath Element
var clippath = document.createElementNS("http://www.w3.org/2000/svg","clipPath");
clippath.setAttribute("id", id);
svgcanv.appendChild(clippath);
//draw the path
var cp=paper.path(path).translate(x, y).attr({stroke: 0});
$(cp.node).appendTo('#'+id+'');
//assoc clipPath with image
var img = paper.image(url,x,y,w,h);//.attr({fill:"#111",opacity:0.7});
img.node.setAttribute("clip-path","url(#"+id+")");
img.node.setAttribute("class",id);
}