从外部调用jQuery中定义的函数

Ism*_*ilS 2 javascript jquery

我的aspx页面: -

  <script src="js/jquery-1.4.2.js" type="text/javascript"></script>
  <script src="js/jquery-ui-1.8.2.custom.js" type="text/javascript"></script>

  <script type="text/javascript">
    $(document).ready(function () {
      //lots of other code here....
      function showMessage(){
        $("#msgDiv").dialog({
                        modal: true,
                        buttons: {
                                  Ok: function() {
                                          $(this).dialog('close');
                                      }
                        },
                        resizable: true,
                        show: "explode",
                        position: "center",
                        closeOnEscape: true,
                        draggable: false
                      });
      }
    });
   </script>
Run Code Online (Sandbox Code Playgroud)

从上面的页面触发的另一个aspx弹出页面

<script type="text/javascript">

    window.opener.document.getElementById("msgDiv").innerHTML = <%=MessageToShow%>; //works very well for me.
    window.opener.document.showMessage(); // I am unable to access it like this?
    window.close();

</script>
Run Code Online (Sandbox Code Playgroud)

基本上我想showMessage()从弹出窗口调用.我还有其他逻辑可以在两个页面中执行.

Ben*_*thy 13

在文档准备中声明你的函数:

$(document).ready(function() {

    window.showMessage = function() {
        //...
    };

});
Run Code Online (Sandbox Code Playgroud)

然后你应该可以从其他文档中调用它,如下所示:

window.opener.showMessage();
Run Code Online (Sandbox Code Playgroud)

因为它在全局范围内,所以只需通过调用就可以在主文档中调用它

showMessage();
Run Code Online (Sandbox Code Playgroud)


Jam*_*ran 4

据我所知,你想做的事情,是做不到的。那么,我们到底能做什么呢?

我认为最简单的想法就是移到showMessage函数之外ready,然后从内部调用它。

现在,如果确实必须在该函数中定义它,请将其设为命名函数:

  function calledonready()
  {
      /// stuff
      function showMessage(){ 
      /// stuff
      }
   }

$(document).ready(calledonready);

window.opener.document.calledonready.showMessage(); 
Run Code Online (Sandbox Code Playgroud)