【问题标题】:Pass Variable to another page using Worker.js - WinJs使用 Worker.js - WinJs 将变量传递到另一个页面
【发布时间】:2014-02-10 17:18:53
【问题描述】:

我正在处理一个在我的 default.html 页面上包含 iframe 的项目, 我正在尝试使用 Workers.js 作为中介将变量从第一页传递到我的 iframe,

意思是:

My First page : default.html, that send message to worker.js 
-----------------------------
|    default.html           |      var worker = Worker("ms-appx:///js/worker.js");
|                           |      worker.postMessage({ calc: 1000 });
|              --------     | 
|             |internal|    | 
|             | iframe |    |
|             |        |    |
|              --------     |
----------------------------- 

Worker.js:-->

var total;
onmessage = function (event) {
calc = event.data.calc;
for (var i = 0; i <= calc; i++) {
    //some work
   total = 1+i;   //as example
};

postMessage({ calc: total });}

现在我尝试接收使用相同 worker.js 的 iframe 的消息

iframe 本地页面:

 var worker = Worker("ms-appx:///js/worker.js");
 worker.addEventListener("message",function (e) {
  alert(e.data.calc); //not getting message from worker.js on this page ???
          });

他们是否有任何解决方案可以使用 worker.js 将消息从一个页面传递到另一个页面??

如有语法错误,请见谅!!

【问题讨论】:

  • 不幸的是,您不能单独使用 Worker 执行此操作 - 您需要 SharedWorker,但它们是 not yet supported in Internet Explorer(这是 Windows Native 应用程序运行的)。您可以通过在 iframe 与其父级之间传递消息来进行设置,但不能直接使用 Worker API。

标签: javascript windows-8 winjs windows-8.1 winrt-async


【解决方案1】:

回答您的问题:不,没有

工作人员在“沙盒”中运行并且范围有限。他们无法访问 网页的大部分对象模型,但确实可以访问 全局核心 JavaScript 对象。

一个worker不能在两个页面之间共享。正如 jackerella 所说,您可以使用共享工作者,但尚不支持它们。

看看documentation here的最后一行,上面写着:

此版本不支持共享工作器。

【讨论】:

  • 感谢您的回答..我在工作人员中使用了本地存储并将其发布到我的 iframe 页面...本地存储变量在第一页更改..所以我可以在这里分享技巧:) @Maurizio 在丹麦
  • 好。但考虑到您也可以在没有工作人员的情况下使用本地存储。 :)
  • 你说得对,但我不想在我的主页或 iframe 上放置类似 setInterval 的函数,最好在 worker 上使用 setInterval,所以我在 worker 上使用它并将消息传递给我的 iframe 25ms 的间隔..所以我的页面没有挂起,UI 也很好用..@Maurizio 在丹麦
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多