首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在dalekjs .execute( )中执行外部函数?

如何在dalekjs .execute( )中执行外部函数?
EN

Stack Overflow用户
提问于 2014-02-24 09:58:04
回答 1查看 680关注 0票数 2

我想在dalekjs的.execute()函数中执行一个外部函数。有可能这样做吗?

EN

回答 1

Stack Overflow用户

发布于 2014-03-06 11:44:22

取决于external的含义。

如果要执行客户端JavaScript中已经存在的函数,则必须通过全局window对象访问该函数。例如:

在我的客户端脚本中,我有这样的内容:

代码语言:javascript
复制
function myAwesomeFn (message) {
  $('body').append('<p>' + message + '</p>');
}

如果该函数是在全局作用域中定义的(而不是在某些IefF.E.中),则可以在执行函数中触发它,如下所示:

代码语言:javascript
复制
test.execute(function () {
  window.myAwesomeFn('Some message');
});

如果您的意思是使用外部“在Dalek测试套件中定义的函数”,我可能会让您失望,因为Dalek测试文件和execute函数的内容是在不同的上下文(甚至不同的JavaScript引擎)中调用的。

因此,这是行不通的:

代码语言:javascript
复制
'My test': function (test) {
   var myFn = function () { // does something };

   test.execute(function () {
     myFn(); // Does not work, 'myFn' is defined in the Node env, this functions runs in the browser env

   })
 }

什么是有效的:

代码语言:javascript
复制
'My test': function (test) {


   test.execute(function () {
     var myFn = function () { // does something };
     myFn(); // Does work, myFn is defined in the correct scope

   })
 }

希望回答你的问题,如果没有,请提供更多的细节。

编辑:

使用节点自己的要求加载文件

代码语言:javascript
复制
var helper = require('./helper');
module.exports = {
  'My test': function (test) { 
     test.execute(helper.magicFn)
   }
 };

在您的helper.js中,您可以做任何您想做的事情,这将是有意义的(或多或少):

代码语言:javascript
复制
module.exports = {
  magicFn: function () { 
     alert('I am a magic function, defined in node, executed in the browser!');
   }
 };

有关如何保持测试代码干燥的进一步策略,请查看此repo/file:Dalek干例

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21984287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档