JavaScriptの問題解決

2005-09-15 00:16:21 | Weblog
javascriptの問題、ユーザのクリックからJavaScriptでクリックした単語のStringを獲得して、それをアプレットに送信し、表示するっていう仕組み。最初は:クリック側のコードは:

(script language='JavaScript')(!--
function toSubWin( obj )
{
window.open('applet.html?'+obj.firstChild.toString(),'sw');
}
// --)(/script)
(HTML)
(HEAD)

ちなみにアプレットは次のようなもので
import java.awt.*;
import java.applet.*;

public class SimpleApplet extends Applet{

public String word1;

public void init(){
word1 = getParameter("word") ;
setBackground(Color.yellow);
setForeground(Color.white);
setFont(new Font("Serif", Font.BOLD, 20));
}

public void start(){
repaint();
}

public void paint(Graphics g){
g.drawString("あるかどうか"+word1+"この前", 100, 60);
}
}
(TITLE)(/TITLE)
(/HEAD)
(BODY)
(a onClick='toSubWin(this)')ここをクリック(/A)
(/BODY)
(/HTML)


クリックしたのを受け取る側のHTMLは
(html)
(body)
データ表示(br)
(script language="JavaScript")
(!-- str = location.search;
   str = str.substring(1,str.length);  
   document.write(str); // --)
(/script)
(applet code='SimpleApplet' name='app' width='500' height='500')
(script)
document.write("(param name='word' value=str)");
(/script)
(/body)
(/html)

しかし、これでは、どうしてもwordの値をアプレットに送信することが出来なかった。そこで、strを直接呼ぶではなく、頭の所で定義した関数を呼ぶことで獲得する
ことで問題解決した。
コードは次のように変えた:
(html)
(head)
(title)渡された値を表示する(/title)
(/head)
(body)
渡された値を表示する(br)
(script language="JavaScript")(!--

function getStr(){
str = location.search;
str = str.substring(1,str.length);
return str ;
}
// --)(/script)
あるかな?

(script language="JavaScript")
document.write("(applet code='SimpleApplet' name='app' width='500' height='500')");
document.write("(param name='word' value="+getStr()+")");
(/script)
(/body)
(/html)
ちなみに、アプレットは次のようなものだった
import java.awt.*;
import java.applet.*;

public class SimpleApplet extends Applet{

public String word1;

public void init(){
word1 = getParameter("word") ;
setBackground(Color.yellow);
setForeground(Color.white);
setFont(new Font("Serif", Font.BOLD, 20));
}

public void start(){
repaint();
}

public void paint(Graphics g){
g.drawString("あるかどうか"+word1+"この前", 100, 60);
}
}