【问题标题】:How to pass Paper.set() to another Javascript in my case?在我的情况下,如何将 Paper.set() 传递给另一个 Javascript?
【发布时间】:2011-05-19 07:56:54
【问题描述】:

我有一个 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.jsmy-graph.js 调用 createCircle 函数,并处理按钮点击事件,当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 from my-graph.js 到这个 test.js 并输出 st.length 作为这个页面的内容

js/test.js

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

但我总是在新弹出的页面中得到 0 长度的 st。为什么?

【问题讨论】:

    标签: javascript jquery raphael jquery-events


    【解决方案1】:

    所以您打开一个新页面,其中包含对相同代码的脚本引用 作为另一页

    这意味着它们具有相同的状态。 新页面将通过评估获得自己的状态 脚本本身

    你可以做的是保存参考

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

    返回您可以使用它来调用新页面上的函数

    或者你也可以用 jquery 完成起始页上的所有代码 并使用该窗口对象作为您的上下文

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

    raphael 对象被设置在一张纸上,我认为不舒尔什么会 在论文之间传递它们时发生了:S

    【讨论】:

      猜你喜欢
      • 2016-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-06
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      相关资源
      最近更新 更多