Raphael.js: Как передать Paper.set () в другой javascript в моем случае? - PullRequest
0 голосов
/ 19 мая 2011

У меня есть страница index.html, которая содержит кнопку id="my-btn"

<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>My INDEX PAGE</title>
    </head>
    <body>
        <div id="my-canvas"></div>
        <br><input type="button" id="my-btn" value="OPEN NEW WINDOW"/>
        <script src="js/jquery-1.5.1.js"></script>
        <script src="js/raphael.js"></script>
        <script src="js/my-graph.js"></script>
        <script src="js/my.js"></script>
    </body>
    </html>

js / my.js вызывать createCircle функцию из my-graph.js , и обрабатывает событие нажатия кнопки, при нажатии кнопки my-btn открывается новое окно браузера с новой страницей ( test.html )

**my.js:**
    MyTest.createCircle();
    $('#my-btn').click(function(){  
      window.open('test.html', 'testwindow');
    });

my-graph.js:

MyTest= function(){

     var paper = Raphael("my-canvas", 320, 200);
         var st=paper.set();

    return {
       createCircle: function(){
                st.push(
                   paper.circle(10, 10, 5),
                   paper.circle(30, 10, 5)
                 );


            }
       getSet: function(){
                 return st;
        }   

    };


}();

Новая страница ( test.html ) открывается в новом окне браузера:

test.html:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>TEST</title>
</head>
<body>
    <div id="my-name"></div>
    <script src="js/jquery-1.5.1.js"></script>
    <script src="js/my-graph.js"></script>
    <script src="js/test.js"></script>
</body>
</html>

На новой странице test.js будет вызвано, и я хочу передать Paper.set () st из my-graph.js в этот тест.js и вывод st.length в качестве содержимого этой страницы

js / test.js

$(document).ready(function(){
    var st=MyTest.getSet();
    $("#my-name").append("<strong>"+st.length+"</strong>");
});

Но я всегда получаю 0 длины st в новомвсплыла страница.Почему?

1 Ответ

0 голосов
/ 19 мая 2011

так что вы открываете новую страницу со ссылками на скрипт в том же коде как другая страница

Это означает, что они имеют одинаковое состояние. Новая страница получит свое собственное состояние от оценки сам скрипт

что вы можете сделать, это сохранить ссылку,

 var w = window.open('test.html', 'testwindow');

возвращает, вы можете использовать это для вызова функции на новой странице

или вы можете сделать весь код на стартовой странице с помощью jquery и использование этого объекта окна в качестве контекста

var w = window.open('test.html', 'testwindow');
$(w).ready(function() {
  $("body", w).append(mystuff);
});

объекты Рафаэля установлены на бумаге, я думаю, не уверен, что будет случилось при прохождении их между бумагами: S

...