微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node-webkit如何在另一个窗口调用一个函数?

我用这段代码创build了一个新的窗口,试图发送一些数据,但函数没有被调用,也许我做错了?

index.html上的script.js

var path = require('path'); element.onclick = function(){ var win = gui.Window.get(window.open('listdir.html')); var location = path.resolve(process.cwd(),'fontsFolder'); win.eval(null,'listdir("'+location+'")'); //Is there a node function to parse ''? };

listdir.html上的listdir.js

function listdir(directory){ alert("directory "+directory); //never called }

错误

发送由GetAsyncKeyState()忽略的虚拟鼠标点击?

ruby控制台模拟器

如何find包含类定义的jar文件

为什么安装Ruby on Rails会产生错误“数组的大小ruby_check_sizeof_voidp是否定的”?

如何获得长度超过260个字符的文件的长度?

ReferenceError: listdir is not defined at <anonymous>:1:1 at Window.init.Window.eval (window_bindings.js:486:16) at HTMLLIElement.element.onclick (file:///C:/../AppData/Local/Temp/nw3528_1882/js/script.js:29:12)

无法执行twistd – 显示没有输出

应用程序崩溃作为有限的用户

Python 3:捕获图像

当我在Qt中编译一个应用程序时,“SHIMVIEW:Shiminfo(complete)”消息

在Windows中,导轨s给出了3个不同的错误,我修复一个,并得到更多

好的,对于“如何在另一个窗口中调用函数”这个问题,这个问题可能不是正确的答案,而是您的初始问题“如何将参数发送到新窗口”(编辑标题之前)的答案。

因为我是HTML5中的新存储对象的热心人,所以我会通过sessionStorage同步窗口(所以传递的参数将在当前的新窗口生存sessionStorage存活,但不会在此之后)。

我的工作解决方

index.html(初始窗口)

<!DOCTYPE html> <html> <body> Test <a href="">Click</a> <script src="jquery-1.11.1.min.js"></script> <script> var mySharedobj = { 'one': 1,'two': 2,'three': 3 }; // node-webkit specific var gui = require('nw.gui'); $('a').click(function() { var win = gui.Window.get(window.open('index2.html')); win.eval(null,'sessionStorage.setItem('mySharedJSON',''+JSON.stringify(mySharedobj)+'');'); }); </script> </body>

index2.html(将通过window.open调用打开的新窗口:

<!DOCTYPE html> <html> <body> Test 2: <script src="jquery-1.11.1.min.js"></script> <script> $(document).ready(function() { // Process sharedobj when DOM is loaded var mySharedobj = JSON.parse(sessionStorage.getItem('mySharedJSON')); // Now you can do anything with mySharedobj console.log(mySharedobj); }); </script> </body>

那么它是怎样工作的? window.eval (见这里的文档 )需要脚本的源代码,可以在新创建的窗口的上下文中运行。 我想,你的第一次尝试是行不通的,因为脚本只是在创建窗口的时候才会被执行,因此DOM尚未被解析,并且当时没有JavaScript函数可用。 所以只有可用的基本功能( window对象)。 所以我们传入了一个函数,它将在window.sessionStorage中存储一个序列化的JSON。 这样,您就可以从新窗口中的所有功能访问它。

再次:这不是一般用法的正确答案,但它可能适合您的问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐