2011-07-10 7 views
0

jspで3つのフレームを使用していますが、1つのフレームにトランザクションのリンクが含まれています。リンクをクリックすると、それぞれのフレームに2つのxmls(Stringsとして)を表示する必要があります。javascript関数で大きな文字列を渡す

<display:table name="sessionScope.transactions" id="tTable"> 
    <display:column title="Transaction Id"> 
    <a href="javascript:somejavascript('<bean:write name='tTable'   
    property='requestXML' />','<bean:write name='tTable' property='responseXML' />');"> 

    <bean:write name='tranTable' property='transactionId' /> 

</a> 
</display:column>* 

は、私がリンクをもたらしながら、完全にevrythingを持って帰りたいと思う、もう1つは、リンクをクリックしたときに、私はjavascript関数で文字列としてそれらXMLSを渡し、フレームでそれをdispalyたいです。

somejavascript(req, resp){ 
    parent.frame2.location.href = req; 
    parent.frame3.location.href = resp; 
} 

しかし、私はJavaScript関数で大量のデータを渡すことができないことに気付きました。それはいくつかのjavascriptルールを破ります。この問題の回避策はありますか?

答えて

2

引用符のバランスを取って内側の引用符をエスケープする必要があります。

http://jsfiddle.net/9qdkc/

全体的には、あなたのアプローチは不適切です。 javascript:のリンクは避けてください。


改善の方法

JavaScript関数に渡すデータを別のノードとして表示し、このノードに一意のIDを割り当てます。

次に、このIDを持つ属性をリンクノードに追加します。

別の JavaScriptファイルとadd click event listenersのリンクをすべて繰り返します。

これらのリスナーのハンドラでは、クリックされたリンクのID属性を分析し、DOM/E4Xを使用してドキュメントをトラバースして、対応するIDを持つノードを検索します。

+0

返信いただきありがとうございます。次のようにリンククリック時にeventlistenerを追加できます。function load(){var el = document.getElementById( "frame1"); el.addEventListener( "click"、function(){modifyText( "requestXML")}、false); }しかし、セッションスコープ内のオブジェクトをループすることでJSPで取得できるので、上記のコードでrequestXMLをmodifyText関数に渡すにはどのようにすればよいか分かりません。 javascript関数でこれらのリクエストと応答のXMLを渡す方法があるかどうかを教えてください。ありがとう – user837593

+0

IDの - http://jsfiddle.net/9qdkc/2/のような何か。 HTMLコメントの代わりに、おそらく 'CDATA'セクションを使用しているはずです。 – katspaugh

+0

ありがとうございました。私はあなたのコードが私が行ってほしいところに私を連れて行くだろうと思う:)しかし、私はの代わりにCDATAを使用する方法の例をtranTableオブジェクトからのみrequestXMLを取得します。 – user837593

関連する問題