【问题标题】:Run Function in original page from window.open javascript从 window.open javascript 在原始页面中运行函数
【发布时间】:2015-02-20 19:41:49
【问题描述】:

如何在 window.open 的原始页面中运行函数

original_page.html

<div id="Processing" style="display:none;">
<button onclick="window.open("Processing_window.html")">open</button>
</div>

<script language="JavaScript">
    function submit_form() {    
          var upgradeForm = document.getElementById('upgradeForm');
          setTimeout("upgradeForm.submit()",3000); 
     } 

</script>

========

Processing_window.html

<script language="JavaScript">
    function Processing_window() {  
        var doc = window.opener.document, Processing = doc.getElementById("Processing");
        Processing.style = '';
        submit_form();  //Here the problem
        window.close();
    } 
    setTimeout ("Processing_window()",5000); 
</script>

========

我去运行“submit_form();” Processing_window.html 中的函数

【问题讨论】:

  • 试试 parent.submit_form();或 window.opener.submit_form();

标签: javascript jquery function var


【解决方案1】:

要从开启程序访问函数,请使用window.opener.functionName,假设两者在同一个域中。

function Processing_window() {  
    var doc = window.opener.document, Processing = doc.getElementById("Processing");
    Processing.style = '';
    // Here's the solution
    window.opener.submit_form();  
    window.close();
} 
setTimeout ("Processing_window()",5000); 

【讨论】:

    【解决方案2】:

    需要对属性中代码中的引号进行HTML编码,或者使用撇号:

    <button onclick="window.open('Processing_window.html')">open</button>
    

    只要您打开的页面具有相同的来源(相同的服务器,相同的协议),您就可以使用opener 属性访问父窗口window 对象。您可以在其中找到对该函数的引用:

    window.opener.submit_form();
    

    【讨论】:

    • 问题不在这里我想要的是:当关闭窗口时,3秒后正在运行的功能原来页面中的功能不在窗口页面中
    • @J7xx:你什么意思?您接受的 Juan Mendes 的答案与我建议的代码完全相同。
    • 我认为他被您最初的回答分心了,该回答正在解决另一个问题并且没有看到第二部分,就像我也错过了它并重复了您的回答一样。
    【解决方案3】:

    可以,但不能跨域。只能在同一个域中。

    <script>
    function new_win_fun() {
    var wind = window.open("Processing_window.html");
    var upgradeForm = wind.document.getElementById("upgradeForm");
    wind.setTimeout("upgradeForm.submit()",3000); 
    }
    </script>
    
    <button onclick="new_win_func()">Run</button>
    

    【讨论】:

    • setTimeout("upgradeForm.submit()",3000);我去运行“submit_form();” window.close 之后和 3000 S 之后的函数
    • 运行"wind.setTimeout("upgradeForm.submit()",3000); "通过"Processing_window.html"中的函数关闭窗口后
    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 2018-01-01
    • 1970-01-01
    相关资源
    最近更新 更多