当前位置: 首页 > 面试题库 >

在JavaScript中将回调函数设置为新窗口

董奇思
2023-03-14
问题内容

有没有一种简单的方法可以将“回调”功能设置为在javascript中打开的新窗口?我想在新窗口中运行父函数,但我希望父函数能够设置此特定函数的名称(因此不应在新的Windows页面中对其进行硬编码)。

例如在父母中,我有:

function DoSomething { alert('Something'); }
...
<input type="button" onClick="OpenNewWindow(linktonewwindow,DoSomething);" />

在子窗口中,我要:

<input type="button" onClick="RunCallbackFunction();" />

问题是如何创建它OpenNewWindowRunCallbackFunction功能。我虽然想将函数的名称作为查询参数发送到新窗口(服务器端脚本在生成的子HTML中生成适当的函数调用),但是我在考虑是否还有另一种或更好的方法来完成这,也许甚至不需要服务器端修补。

纯JavaScript,服务器端解决方案和jQuery(或其他框架)都受到欢迎。


问题答案:

已更新,以获取注释:
如果您通过来打开窗口,window.open()则可以在子页面中将子菜单中的函数设置为指向父函数的引用,因此请在子页面中将其设置为:

var RunCallbackFunction = function() { }; //reference holder only

然后在您的父窗口(打开器)中,在加载该子窗口时设置该函数,如下所示:

//random function you want to call
function myFunc() { alert("I'm a function in the parent window"); }

//to actually open the window..
var win = window.open("window.html");
win.onload = function() { win.RunCallbackFunction = myFunc; };

这会将您父母中的功能分配为该孩子的目标…并且您可以根据需要将每个孩子指向一个不同的功能,因为他们都是独立的。



 类似资料:
  • 问题内容: 我对JavaScript比较陌生,我想我知道回调函数的工作原理,但是在搜索Web几个小时后,我仍然不明白为什么我的代码不起作用。 我正在提出一个AJAX请求,该请求返回一个字符串数组。我正在尝试将此数组设置为局部变量,但是一旦执行回调函数,它似乎就失去了它的值。 在控制台中,显示为未定义。谁能向我解释为什么未设置此参数,以及如何在回调函数中设置局部变量。 问题答案: 这里的问题是aja

  • 在中设置回调函数时,要使用什么? 我尝试将函数设置为类型<code>void。将其更改为<code>void __stdcall,但如何使用<code>GLFW的<code>typedef,例如<code>GLFW*fun?我认为这是正确的选择。我真的需要一个示例源代码。 顺便说一句,我将GLFW定义为 更新 我的代码是这样的: (我以三种方式做到了) 一 原型。因为在下面,所以这个给我一个编译错

  • 我想为Nashorn提供一个函数,比如: 上面的代码不编译,因为需要一个对象,而lambdas不是对象。我如何将javascript名称设置为java函数? 编辑澄清: 在JavaScript中,我们可以这样写: 如果我用Java编写了,我如何将该函数分配给JavaScript变量?

  • 在VSCode编辑器中写js代码,如何让鼠标悬浮js内置函数方法时出现的悬浮窗内的文档为中文? 安装过Chinese (Simplified) 插件(重启VSCode后)也是英文 比如悬浮数组的arr.find方法出现提示窗文档:

  • 问题内容: 我正在尝试将一些参数传递给用作回调的函数,该怎么做? 问题答案: 如果您想要更一般的东西,可以使用arguments变量,如下所示: 但是否则,您的示例可以正常工作(可以在测试器中使用arguments [0]代替回调)

  • 问题内容: 我正在尝试通过使用SWIG 1.3在Java中实现一些C代码。现在,我必须将一些现有的C重建为Java代码,并提供指向C方法的Java函数的函数指针。 C代码:net.c: client.c: 我在Java中已经拥有的一切是: 并且应该以与上述C代码相同的方式将其注册为回调,现在在Java中: 我发现的是 http://www.swig.org/Doc1.3/SWIGDocumenta