2011-12-22 9 views
0

私はhtmlページに.svgが埋め込まれています。私は、javaスクリプトのロジックのほとんどを書かれているとhtmlとの.svgファイル間で同じ.jsファイルを共有したいと思います:EX用htmlとsvgの間でjavaスクリプトメソッドを共有するには?

を:私は、mylogic.jsに次のように持っている:

var xmlDoc = null; 
function loadXmlDoc() { 
    xmlDoc = new XmlDoc..... 
} 

function onHtmlLoad() { 
    loadXmlDoc(); 
} 

function onSvgLoad() { 
    xmlDoc.getElemementById(... 
}` 

そして、htmlで、...私は

<html> 
<script src="mylogic.js"></script> 
<body onLoad='onHtmlLoad();"> 
... 
<object id='svgid' data='sample.svg'.../> 
... 
</body> 
</html> 

を持っているし、私のような再びそれらを含める必要がありますので、HTMLページに含まれるJavaスクリプトが埋め込まれたの.svgファイルには表示されません

<svg...onload="window.onSvgLoad();"> 
<script xlink:href="mylogic.js></script> 
</svg> 

私は.jsファイルを2回インクルードして以来、私はonSvgLoad()関数の中でnullとしてxmlDocを取得しています。私は、svgのhtmlからロードされたxmlDocの同じインスタンスを取得する方法があるはずだと信じています。しかし、私はそれを取得していない..?

代わりに、svgに.jsファイルを含めないようにしましたが、代わりにonload = "window.top.onSvgLoad();にonloadを変更しようとしました。 ; onload = "window.parent.onSvgLoad();"とする。まだ動作しませんでした! * IE9をHtml5のネイティブサポートで使用しています。

答えて

1

JavaScriptがHTMLページに組み込まれていますが、埋め込み.svgファイルから表示されます。埋め込みsvgからscriptタグを削除し、parent.methodとして必要なメソッドを呼び出します。 mylogic.jsが

function hello() 
{ 
    return "hello"; 
} 

を持っていた場合、あなたはそれを呼び出すために、埋め込みの.svgファイルに

<script> 
    alert(parent.hello()); 
</script> 

を書くことができます。

+0

@RoberSmith、私はIE9で試しましたが、動作しません! –

+0

IE9で私のために働きます –

+0

mmm ...これは、IE9標準のdocモードでのみ動作し、Quirksモードでは機能しません! :( –

関連する問題