全端tricks 1
发布在大搜车前端团队专栏2014年12月11日view:4091
在文章任何区域双击击即可给文章添加【评注】!浮到评注点上可以查看详情。

父window和子iframe方法的互调

写后台管理程序的时候经常会用到iframe. 这里小总结一下几种情况.

全局的方法都是挂在window对象上, 所以定义的全局方法可以通过window.func()调用. 当然全局变量/全局方法应该是被尽量避免的, 就这里的这种需求来说, 可以把特定的几个变量/方法赋给window.

1.父window调用子iframe的方法

// frameName是子iframe的name属性, 是iframe的标识符
window.frames[frameName].func()

2.子iframe调用父window的方法

window.parent.func();

3.判断当前的window对象是不是最顶层的window

window.parent === window

Nodejs的一些小技巧

1.获取Home路径

function getUserHome() {
    return process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'];
}

2.判断当前环境是nodejs还是browser 现在isomorphic的流行, 使得有些js模块会在server和浏览器端重用, 同时又有一些细节不同, 这是就需要判断是在server端nodejs环境, 还是在browser环境.

function isNodeEnv(){
    try{
        return (Object.prototype.toString.call(global.process) === '[object process]' );
    }
    catch(err){
        return false;
    }
}

3.un require a module 应用场景比较奇葩, 还是isomorphic, 每次修改前后端通用的脚本都要重启nodejs? no! 只要把通用模块的require放在页面路由里就好啦~ 每次页面请求来了, require最新的脚本, send完页面之后再un require. 下次刷新页面查看代码效果还是update-to-date的~

delete require.cache[require.resolve(modelName)];
评论
发表评论
5年前

jshint代码中看到它们获取Home路径是这么做的

function getHomeDir() {
  var homePath = "";
  var environment = global.process.env;
  var paths = [
    environment.USERPROFILE,
    environment.HOME,
    environment.HOMEPATH,
    environment.HOMEDRIVE + environment.HOMEPATH
  ];

  while (paths.length) {
    homePath = paths.shift();
    if (fs.existsSync(homePath)) {
      return homePath;
    }
  }
}

很好奇后边两种情况什么情况下存在。

5年前
赞了此文章!
WRITTEN BY
chenllos
志向远大的前端~
TA的新浪微博
PUBLISHED IN
大搜车前端团队专栏

大搜车(souche.com)前端团队的一些研究和总结性文章。欢迎订阅。

我的收藏