相关疑难解决方法(0)

Web工作者没有单独的Javascript文件?

据我所知,Web worker需要在一个单独的JavaScript文件中编写,并像这样调用:

new Worker('longrunning.js')
Run Code Online (Sandbox Code Playgroud)

我正在使用闭包编译器来组合和缩小我的所有JavaScript源代码,而我宁愿不必将我的worker放在单独的文件中进行分发.有办法做到这一点吗?

new Worker(function() {
    //Long-running work here
});
Run Code Online (Sandbox Code Playgroud)

鉴于第一类函数对JavaScript至关重要,为什么执行后台工作的标准方法必须从服务器加载整个'其他JavaScript文件?

javascript web-worker

279
推荐指数
9
解决办法
7万
查看次数

是否可以在浏览器中运行沙盒JavaScript?

我想知道是否可以在浏览器中运行JavaScript沙箱,以防止访问HTML页面中运行的JavaScript代码通常可用的功能.

例如,假设我想为最终用户提供一个JavaScript API,让他们定义在"有趣事件"发生时运行的事件处理程序,但我不希望这些用户访问该window对象的属性和功能.我能做到吗?

在最简单的情况下,假设我想阻止用户呼叫alert.我能想到的几种方法是:

  • window.alert全球重新定义.我不认为这是一种有效的方法,因为在页面中运行的其他代码(即用户在其事件处理程序中未编写的内容)可能想要使用alert.
  • 将事件处理程序代码发送到要处理的服务器.我不确定将代码发送到服务器进行处理是正确的方法,因为事件处理程序需要在页面的上下文中运行.

也许服务器处理用户定义的函数然后生成要在客户端上执行的回调的解决方案可行吗?即使这种方法有效,是否有更好的方法来解决这个问题?

javascript browser sandbox

136
推荐指数
8
解决办法
4万
查看次数

使WebWorkers成为一个安全的环境

为了有一个能够在浏览器中运行任意javascript代码的接口,而没有像典型的妈妈玩笑那么大的安全漏洞,Esailija建议使用Web Workers.它们在半沙盒环境中运行(没有DOM访问并且已经在浏览器中)并且可以被杀死,因此用户无法将它们置于无限循环中.

以下是他提出的例子:http://tuohiniemi.fi/~runeli/petka/workertest.html(打开你的控制台)

jsfiddle(仅限谷歌浏览器)

现在,这似乎是一个很好的解决方案; 然而,它是完整的(或接近完整的)吗?有什么明显缺失的吗?

整个事情(因为它连接到机器人)可以在github上找到:worker,evaluationator

主要:

workercode = "worker.js";

function makeWorkerExecuteSomeCode( code, callback ) {
    var timeout;

    code = code + "";
    var worker = new Worker( workercode );

    worker.addEventListener( "message", function(event) {
        clearTimeout(timeout);
        callback( event.data );
    });

    worker.postMessage({
        code: code
    });

    timeout = window.setTimeout( function() {
        callback( "Maximum execution time exceeded" );
        worker.terminate();
    }, 1000 );
}

makeWorkerExecuteSomeCode( '5 + 5', function(answer){
    console.log( answer ); …
Run Code Online (Sandbox Code Playgroud)

javascript web-worker

66
推荐指数
2
解决办法
3429
查看次数

如何运行不受信任的代码服务器端?

我试图在linux + node.js中使用沙盒模块运行不受信任的javascript代码,但它已经坏了,我只需要让用户编写打印出一些文本的javascript程序.不允许其他i/o,只使用普通的javascript,没有其​​他节点模块.如果不是真的可以这样做,你建议用什么其他语言来完成这项任务?我需要的最小特征集是一些数学,正则表达式,字符串操作和基本的JSON函数.脚本将运行让我们说5秒钟顶部,然后该过程将被杀死,我怎么能实现这一点?

javascript linux node.js

22
推荐指数
3
解决办法
6530
查看次数

Javascript沙盒

我想让开发人员在Javascript中为一个网站编写一些自定义应用程序,但是我想要沙箱,这样他们就不能做任何顽皮的事情,比如重定向用户,将主体显示设置为无等等.我在Javascript中有一个命名空间他们需要的功能存在于那里,所以我想创建一个沙箱将是一个问题:

with(Namespace) {
    //App code goes here where they can only access Namespace.*
}
Run Code Online (Sandbox Code Playgroud)

如何轻松解决这个问题以及可以采取哪些其他方法?宁愿不必审核每个提交的应用程序.

javascript sandbox with-statement

6
推荐指数
2
解决办法
4004
查看次数