2011-07-05 16 views
0

私はほとんどすべてがスクリプトで構成されたsvgファイルを持っています。スクリプトを分けて、コンプレッサーで実行できるようにしたいのですが、これを行う方法が見つけられません。どんな助力も感謝しています。svgファイルからjsを分離する問題

このようなSVGファイルを見て:

<?xml version="1.0" standalone="no"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
    "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 

<svg id="chart" 
    xmlns="http://www.w3.org/2000/svg" 
    onload="init(evt)" > 

<script type="application/ecmascript"> 
<![CDATA[ 
...lots of code 
//]]> 
</script> 
</svg> 

私がやったことはlotsOfCode.jsとして "コードの多くを" アウト抽出、およびにSVGファイルを変更されます。

<?xml version="1.0" standalone="no"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
    "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 

<svg id="chart" 
    xmlns="http://www.w3.org/2000/svg" 
    onload="init(evt)" > 

<script type="application/ecmascript" src="lotsOfCode.js"> 
</script> 
</svg> 

ただし、これは機能しません。ブラウザは、onloadの 'init'関数を見つけることができないと不平を言う。何か案は?ブラウザに 'init'が 'lotsOfCode.js'にあることを伝えるために何かする必要がありますか?

おかげ -

アル

答えて

3

ではなくsrcxlink:hrefを使用してみてください:

<script type="text/ecmascript" xlink:href="lotsOfCode.js"></script> 

編集:ます。またxlink名前空間を参照する必要があります:

<svg id="chart" 
    xmlns="http://www.w3.org/2000/svg" 
    xmlns:xlink="http://www.w3.org/1999/xlink" 
    onload="init(evt)" > 
+0

これはエラーを生成します。 – EML

+0

@ user7 - あなたの ''要素の名前空間への参照を追加します。私は私の答えを更新しました。 – gilly3

+0

優秀 - それをしました。ありがとう。 「アプリケーション」を「テキスト」に変更した特別な理由はありますか? – EML

0

Gillysの答えに加えて、あなたはsvgの行の前に行くためにスクリプトをインクルードしようとしましたか?このよう

: "スクリプトのHREFの名前空間接頭辞のxlink定義されていません":

<script type="application/ecmascript" src="lotsOfCode.js"> 
</script> 
<svg id="chart" 
    xmlns="http://www.w3.org/2000/svg" 
    onload="init(evt)" > 
</svg> 
+0

残念ながら、どちらも動作しません。問題は、svg文書にsvgとスクリプトの2つの最上位要素が含まれていて、ブラウザが2番目のタグが文書の末尾を超えていると不平を言うことです。 – EML

+0

これは有効なXMLではありませんが、svgがhtml文書内でインラインである場合はおそらく動作します。 –

0
<?xml version="1.0" standalone="no"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
    "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 
<svg id="chart" 
    xmlns="http://www.w3.org/2000/svg" 
    xmlns:xlink="http://www.w3.org/1999/xlink" 
    onload="init(evt)" > 
<script type="text/ecmascript" xlink:href="lotsOfCode.js"></script> 
    <circle id='BlueCircle' cx='25' cy='25' r='20' style='fill:blue; '/> 
</svg> 
+0

重要な注意: 後、順番に紹介: ........... .......... SVGは オブジェクト......... .. 閉じる ファイルを拡張子*で保存します。 Svg – ingcapp

関連する問題